GoCryptFS: Unterschied zwischen den Versionen

Aus Foxwiki
Zeile 1: Zeile 1:
= GoCryptFS =
[https://nuetzlich.net/gocrypfs GocryptFS] ist als [https://wiki.ubuntuusers.de/FUSE/ FUSE] Dateisystem in der Sprache [https://wiki.ubuntuusers.de/Go/ Go] implementiert und erzeugt zu jeder Klartext-Datei jeweils eine verschlüsselte Datei.
[https://nuetzlich.net/gocrypfs GocryptFS] ist als [https://wiki.ubuntuusers.de/FUSE/ FUSE] Dateisystem in der Sprache [https://wiki.ubuntuusers.de/Go/ Go] implementiert und erzeugt zu jeder Klartext-Datei jeweils eine verschlüsselte Datei.
* Das Projekt wurde von [https://wiki.ubuntuusers.de/EncFS/ EncFS] inspiriert und hat den Anspruch, Schwachstellen von EncFS zu beheben.
* Das Projekt wurde von [https://wiki.ubuntuusers.de/EncFS/ EncFS] inspiriert und hat den Anspruch, Schwachstellen von EncFS zu beheben.
Zeile 14: Zeile 12:
* Dem kann man entgegenwirken, in dem man die Dateien vor der Verschlüsselung [https://wiki.ubuntuusers.de/split/ zerlegt] oder in Container zusammenfasst.
* Dem kann man entgegenwirken, in dem man die Dateien vor der Verschlüsselung [https://wiki.ubuntuusers.de/split/ zerlegt] oder in Container zusammenfasst.


== Installation ==
= Installation =
 
  # apt-get install gocryptfs  
  # apt-get install gocryptfs  


== Verwendung ==
= Verwendung =
 
GoCryptFS hat zwei Betriebsmodi, den Forward Mode und den Reverse Mode.
GoCryptFS hat zwei Betriebsmodi, den Forward Mode und den Reverse Mode.


Zeile 35: Zeile 31:
* 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.
* 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 Mode ===
== Forward Mode ==


Die Dateien werden im Verzeichnis '''CODIERT''' verschlüsselt gespeichert.
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.
* Der Inhalt von '''CODIERT''' wird im Verzeichnis '''KLARTEXT''' über das FUSE Dateisystem entschlüsselt zum lesen und schreiben angezeigt, wenn '''KLARTEXT''' eingehängt ist.


==== Verzeichnisse anlegen ====
=== Verzeichnisse anlegen ===
  mkdir ~/CODIERT ~/KLARTEXT ~/.config/gocryptfs  
  mkdir ~/CODIERT ~/KLARTEXT ~/.config/gocryptfs  
Soll das Verzeichnis CODIERT versteckt sein, ist dem Verzeichnisnamen ein Punkt „.“ voranzustellen.
Soll das Verzeichnis CODIERT versteckt sein, ist dem Verzeichnisnamen ein Punkt „.“ voranzustellen.


==== GocryptFS initialisieren ====
=== GocryptFS initialisieren ===
Mit der Initialisierung wird neben der Konfigurationsdatei eine Datei '''gocryptfs.diriv''' erstellt, welche die verschlüsselte Verzeichnisstruktur enthält.
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  
  gocryptfs -init -config ~/.config/gocryptfs/KONFDATEI.conf ~/CODIERT  


==== Verzeichnis '''KLARTEXT''' eingehängen ====
=== Verzeichnis '''KLARTEXT''' eingehängen ===
  gocryptfs -config ~/.config/gocryptfs/KONFDATEI.conf ~/CODIERT ~/KLARTEXT  
  gocryptfs -config ~/.config/gocryptfs/KONFDATEI.conf ~/CODIERT ~/KLARTEXT  


==== Nach Gebrauch '''KLARTEXT''' aushängen ====
=== Nach Gebrauch '''KLARTEXT''' aushängen ===
  fusermount -u ~/KLARTEXT
  fusermount -u ~/KLARTEXT


=== Reverse Mode ===
== Reverse Mode ==
 
Im Reverse Mode wird der Inhalt von CODIERT über das FUSE-Dateisystem „read-only“ angezeigt, wenn dieses eingehängt ist.
Im Reverse Mode wird der Inhalt von CODIERT über das FUSE-Dateisystem „read-only“ angezeigt, wenn dieses eingehängt ist.


1. Verzeichnis zum Speichern von GoCryptFS-Konfigurationsdateien erstellen
=== Verzeichnis zum Speichern von GoCryptFS-Konfigurationsdateien erstellen ===
 
mkdir ~/.config/gocryptfs/  
mkdir ~/.config/gocryptfs/  
 
2. Verzeichnisse '''CODIERT''' und '''KLARTEXT''' anlegen
 
mkdir ~/CODIERT ~/KLARTEXT


3. GocryptFS initialisieren
=== Verzeichnisse '''CODIERT''' und '''KLARTEXT''' anlegen ===
mkdir ~/CODIERT ~/KLARTEXT


=== GocryptFS initialisieren ===
Ohne die Option&nbsp;<tt>-config</tt>&nbsp;wird die Konfigurationsdatei als&nbsp;'''~/CODIERT/gocryptfs.conf'''&nbsp;gespeichert.
Ohne die Option&nbsp;<tt>-config</tt>&nbsp;wird die Konfigurationsdatei als&nbsp;'''~/CODIERT/gocryptfs.conf'''&nbsp;gespeichert.
gocryptfs -init -config ~/.config/gocryptfs/KONFDATEI.conf -reverse ~/CODIERT


gocryptfs -init -config ~/.config/gocryptfs/KONFDATEI.conf -reverse ~/CODIERT
=== Verzeichnis&nbsp;'''CODIERT'''&nbsp;einhängen ===
 
4. Verzeichnis&nbsp;'''CODIERT'''&nbsp;einhängen
 
Im Reverse Mode können Dateien mit den Optionen&nbsp;<tt>-exclude</tt>,&nbsp;<tt>-exclude-wildcard</tt>&nbsp;und&nbsp;<tt>-exclude-from</tt>&nbsp;von der verschlüsselten Ansicht ausgeschlossen werden.
Im Reverse Mode können Dateien mit den Optionen&nbsp;<tt>-exclude</tt>,&nbsp;<tt>-exclude-wildcard</tt>&nbsp;und&nbsp;<tt>-exclude-from</tt>&nbsp;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.
* Soll rsync für die Datensicherung verwendet werden, sollte, um Fehler und Warnmeldungen zu vermeiden, der Ausschluss beim Einhängen mit GoCryptFS erfolgen.
gocryptfs -config ~/.config/gocryptfs/KONFDATEI.conf -reverse ~/KLARTEXT ~/CODIERT


gocryptfs -config ~/.config/gocryptfs/KONFDATEI.conf -reverse ~/KLARTEXT ~/CODIERT
=== Datensicherung durchführen ===
 
cp -a ~/CODIERT ~/BACKUP
5. Datensicherung durchführen


cp -a ~/CODIERT ~/BACKUP
==='''CODIERT'''&nbsp;aushängen ===
 
fusermount -u ~/CODIERT  
6.&nbsp;'''CODIERT'''&nbsp;aushängen
 
fusermount -u ~/CODIERT  
 
== Problembehebung ==
 
=== Passwort vergessen oder Konfigurationsdatei verloren ===


= 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.
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  
gocryptfs -masterkey=stdin  


Mit der Option&nbsp;<tt>-masterkey <Masterkey></tt>&nbsp;können die verschlüsselten Daten, z.B. über ein Skript, ohne Konfigurationsdatei geöffnet werden.
Mit der Option&nbsp;<tt>-masterkey <Masterkey></tt>&nbsp;können die verschlüsselten Daten, z.B. über ein Skript, ohne Konfigurationsdatei geöffnet werden.
Zeile 99: Zeile 83:
* Dieses Risiko liegt bei der Option&nbsp;<tt>-masterkey=stdin</tt>&nbsp;nicht vor.
* Dieses Risiko liegt bei der Option&nbsp;<tt>-masterkey=stdin</tt>&nbsp;nicht vor.


=== Passwort ändern ===
== Passwort ändern ==
 
Mit dem Befehl
Mit dem Befehl
 
gocryptfs -config ~/.config/gocryptfs/KONFDATEI.conf -passwd ~/CODIERT   
gocryptfs -config ~/.config/gocryptfs/KONFDATEI.conf -passwd ~/CODIERT   
 
kann man das Kennwort der verschlüsselten Ordners ändern.
kann man das Kennwort der verschlüsselten Ordners ändern.
* Gemeinsam mit der Option&nbsp;<tt>-masterkey</tt>&nbsp;kann ein neues Passwort vergeben werden, wenn man das Passwort vergessen hat, aber der Masterkey vorliegt.
* Gemeinsam mit der Option&nbsp;<tt>-masterkey</tt>&nbsp;kann ein neues Passwort vergeben werden, wenn man das Passwort vergessen hat, aber der Masterkey vorliegt.
* Weitere Informationen enthält die&nbsp;[https://wiki.ubuntuusers.de/Manpage/ Manpage]&nbsp;zu GoCryptFS.
* Weitere Informationen enthält die&nbsp;[https://wiki.ubuntuusers.de/Manpage/ Manpage]&nbsp;zu GoCryptFS.


== Links ==
= Links =
 
== intern ==
=== intern ===
TODO
 
* [https://wiki.ubuntuusers.de/EncFS/ EncFS]&nbsp;– Vorgänger von GocryptFS
* [https://wiki.ubuntuusers.de/Daten_verschlüsseln/ Daten verschlüsseln]
* [https://wiki.ubuntuusers.de/FUSE/ FUSE]
* [https://wiki.ubuntuusers.de/Go/ Go]
 
 
 
=== extern ===


* Projektseite:&nbsp;[https://nuetzlich.net/gocrypfs https://nuetzlich.net/gocrypfs]
== Weblinks ==
* Quellcode und Dokumentation:&nbsp;[https://github.com/rfjakob/gocryptfs https://github.com/rfjakob/gocryptfs]
# Projektseite:&nbsp;[https://nuetzlich.net/gocrypfs https://nuetzlich.net/gocrypfs]
* AES-GCM:&nbsp;[https://eprint.iacr.org/2004/193.pdf https://eprint.iacr.org/2004/193.pdf]
# Quellcode und Dokumentation:&nbsp;[https://github.com/rfjakob/gocryptfs https://github.com/rfjakob/gocryptfs]
* AES-SIV-512:&nbsp;[https://tools.ietf.org/html/rfc5297 https://tools.ietf.org/html/rfc5297]
# AES-GCM:&nbsp;[https://eprint.iacr.org/2004/193.pdf https://eprint.iacr.org/2004/193.pdf]
* Scrypt Schlüsselableitung:&nbsp;[https://tools.ietf.org/html/rfc7914 https://tools.ietf.org/html/rfc7914]
# AES-SIV-512:&nbsp;[https://tools.ietf.org/html/rfc5297 https://tools.ietf.org/html/rfc5297]
* Encrypt-Mix-Encrypt :&nbsp;[https://github.com/rfjakob/eme https://github.com/rfjakob/eme]
# Scrypt Schlüsselableitung:&nbsp;[https://tools.ietf.org/html/rfc7914 https://tools.ietf.org/html/rfc7914]
* Sicherheitsgutachten:&nbsp;[https://defuse.ca/audits/gocryptfs.htm https://defuse.ca/audits/gocryptfs.htm]
# Encrypt-Mix-Encrypt :&nbsp;[https://github.com/rfjakob/eme https://github.com/rfjakob/eme]
* Version für Windows:&nbsp;[https://github.com/bailey27/cppcryptfs https://github.com/bailey27/cppcryptfs]
# Sicherheitsgutachten:&nbsp;[https://defuse.ca/audits/gocryptfs.htm https://defuse.ca/audits/gocryptfs.htm]
# Version für Windows:&nbsp;[https://github.com/bailey27/cppcryptfs https://github.com/bailey27/cppcryptfs]

Version vom 29. April 2021, 20:05 Uhr

GocryptFS ist als FUSE Dateisystem in der Sprache Go implementiert und erzeugt zu jeder Klartext-Datei jeweils eine verschlüsselte Datei.

  • Das Projekt wurde von 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 ist derzeit noch nicht vorhanden.

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, in dem man die Dateien vor der Verschlüsselung zerlegt oder in Container zusammenfasst.

Installation

# apt-get install gocryptfs 

Verwendung

GoCryptFS hat zwei Betriebsmodi, den Forward Mode und den 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 (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 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.

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

Reverse Mode

Im Reverse Mode wird der Inhalt von CODIERT über das FUSE-Dateisystem „read-only“ angezeigt, wenn dieses eingehängt ist.

Verzeichnis zum Speichern von GoCryptFS-Konfigurationsdateien erstellen

mkdir ~/.config/gocryptfs/ 

Verzeichnisse CODIERT und KLARTEXT anlegen

mkdir ~/CODIERT ~/KLARTEXT 

GocryptFS initialisieren

Ohne die Option -config wird die Konfigurationsdatei als ~/CODIERT/gocryptfs.conf gespeichert.

gocryptfs -init -config ~/.config/gocryptfs/KONFDATEI.conf -reverse ~/CODIERT 

Verzeichnis CODIERT einhängen

Im Reverse Mode 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.
gocryptfs -config ~/.config/gocryptfs/KONFDATEI.conf -reverse ~/KLARTEXT ~/CODIERT 

Datensicherung durchführen

cp -a ~/CODIERT ~/BACKUP 

CODIERT aushängen

fusermount -u ~/CODIERT 

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.

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.

Links

intern

TODO

Weblinks

  1. Projektseite: https://nuetzlich.net/gocrypfs
  2. Quellcode und Dokumentation: https://github.com/rfjakob/gocryptfs
  3. AES-GCM: https://eprint.iacr.org/2004/193.pdf
  4. AES-SIV-512: https://tools.ietf.org/html/rfc5297
  5. Scrypt Schlüsselableitung: https://tools.ietf.org/html/rfc7914
  6. Encrypt-Mix-Encrypt : https://github.com/rfjakob/eme
  7. Sicherheitsgutachten: https://defuse.ca/audits/gocryptfs.htm
  8. Version für Windows: https://github.com/bailey27/cppcryptfs