|
|
Zeile 127: |
Zeile 127: |
|
| |
|
| == Anwendung == | | == Anwendung == |
| === Initialisierung ===
| | [[GoCryptFS/Anwendung]] |
| Erstellung der Konfigurationsdatei und der Datei '''gocryptfs.diriv''' (verschlüsselte Verzeichnisstruktur)
| |
| <syntaxhighlight lang="bash">
| |
| gocryptfs -init -config ~/.config/gocryptfs/KONFDATEI.conf ~/CIPHERDIR
| |
| </syntaxhighlight>
| |
| | |
| === Verzeichnis einhängen ===
| |
| <syntaxhighlight lang="bash">
| |
| gocryptfs -config ~/.config/gocryptfs/KONFDATEI.conf ~/CIPHERDIR ~/MOUNTPOINT
| |
| </syntaxhighlight>
| |
| | |
| === Verzeichnis nutzen ===
| |
| | |
| === Verzeichnis aushängen ===
| |
| <syntaxhighlight lang="bash">
| |
| fusermount -u ~/MOUNTPOINT
| |
| </syntaxhighlight>
| |
| | |
| === Home-Verzeichnis verschlüsseln ===
| |
| | |
| === Konfiguration ===
| |
| $ gocryptfs -init|-passwd|-info [OPTIONS] CIPHERDIR
| |
| | |
| === Mount ===
| |
| $ gocryptfs [OPTIONS] CIPHERDIR MOUNTPOINT
| |
| | |
| === Verzeichnis verschlüsseln ===
| |
| ==== Verzeichnisse anlegen ====
| |
| $ mkdir ~/CIPHERDIR ~/MOUNTPOINT ~/.config/gocryptfs
| |
| | |
| === Mount beim Login ===
| |
| ==== Installation ====
| |
| # apt install libpam-mount
| |
| | |
| ==== Konfiguration ====
| |
| # Copy the gocryptfs binary into /usr/local/bin.
| |
| # sudo cp ...
| |
| | |
| # Create a gocryptfs filesystem:
| |
| $ mkdir /home/testuser/cipher /home/testuser/plain
| |
| $ gocryptfs -init /home/testuser/cipher
| |
| | |
| ===== PAM konfigurieren =====
| |
| An example /etc/pam.d/sshd on Fedora 24 and an example /etc/pam.d/sddm on Fedora 31 Workstation is shown below.
| |
| | |
| Basically, pam_mount must be called two times:
| |
| # As the last element in "auth" so it gets the password.
| |
| # As the last element in "session", where it performs the actual mount.
| |
| | |
| '''/etc/pam.d/sshd'''
| |
| <syntaxhighlight lang="bash" line='line' highlight="9,29">
| |
| #%PAM-1.0
| |
| auth required pam_sepermit.so
| |
| auth substack password-auth
| |
| auth include postlogin
| |
|
| |
| # Used with polkit to reauthorize users in remote sessions
| |
| -auth optional pam_reauthorize.so prepare
| |
|
| |
| auth optional pam_mount.so
| |
|
| |
| account required pam_nologin.so
| |
| account include password-auth
| |
| password include password-auth
| |
|
| |
| # pam_selinux.so close should be the first session rule
| |
| session required pam_selinux.so close
| |
| session required pam_loginuid.so
| |
|
| |
| # pam_selinux.so open should only be followed by sessions to be executed in the user context
| |
| session required pam_selinux.so open env_params
| |
| session required pam_namespace.so
| |
| session optional pam_keyinit.so force revoke
| |
| session include password-auth
| |
| session include postlogin
| |
|
| |
| # Used with polkit to reauthorize users in remote sessions
| |
| -session optional pam_reauthorize.so prepare
| |
|
| |
| session optional pam_mount.so
| |
| </syntaxhighlight>
| |
| | |
| '''/etc/pam.d/sddm'''
| |
| <syntaxhighlight lang="bash" line='line' highlight="8,28">
| |
| auth [success=done ignore=ignore default=bad] pam_selinux_permit.so
| |
| auth substack password-auth
| |
| -auth optional pam_gnome_keyring.so
| |
| -auth optional pam_kwallet5.so
| |
| -auth optional pam_kwallet.so
| |
| auth include postlogin
| |
|
| |
| auth optional pam_mount.so
| |
|
| |
| account required pam_nologin.so
| |
| account include password-auth
| |
|
| |
| password include password-auth
| |
|
| |
| session required pam_selinux.so close
| |
| session required pam_loginuid.so
| |
| session optional pam_console.so
| |
| -session optional pam_ck_connector.so
| |
| session required pam_selinux.so open
| |
| session optional pam_keyinit.so force revoke
| |
| session required pam_namespace.so
| |
| session include password-auth
| |
| -session optional pam_gnome_keyring.so auto_start
| |
| -session optional pam_kwallet5.so auto_start
| |
| -session optional pam_kwallet.so auto_start
| |
| session include postlogin
| |
|
| |
| session optional pam_mount.so
| |
| </syntaxhighlight>
| |
| | |
| | |
| Folgendes vor dem schließenden Tag ''</pam_mount>'' hinzufügen und ''testuser'' durch den eigenen Benutzernamen ersetzen.
| |
| | |
| '''/etc/security/pam_mount.conf.xml'''
| |
| <syntaxhighlight lang="xml">
| |
| <volume user="testuser" fstype="fuse" options="nodev,nosuid,quiet"
| |
| path="/usr/local/bin/gocryptfs#/home/%(USER)/cipher" mountpoint="/home/%(USER)/plain" />
| |
| </syntaxhighlight>
| |
| | |
| ==== Das gesamte Home-Verzeichnis verschlüsseln ====
| |
| Folgendes vor dem schließenden Tag ''</pam_mount>'' hinzufügen und ''testuser'' durch den eigenen Benutzernamen ersetzen.
| |
| | |
| '''/etc/security/pam_mount.conf.xml'''
| |
| <syntaxhighlight lang="xml">
| |
| <volume user="testuser" fstype="fuse" options="nodev,nosuid,quiet,nonempty,allow_other"
| |
| path="/usr/local/bin/gocryptfs#/home/%(USER).cipher" mountpoint="/home/%(USER)" />
| |
| </syntaxhighlight>
| |
| | |
| === Passwörter ===
| |
| 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 ändern ====
| |
| <syntaxhighlight lang="bash">
| |
| gocryptfs -config ~/.config/gocryptfs/KONFDATEI.conf -passwd ~/CIPHERDIR
| |
| </syntaxhighlight>
| |
| | |
| * Gemeinsam mit der Option <tt>-masterkey</tt> kann ein neues Passwort vergeben werden, wenn man das Passwort vergessen hat, aber der Masterkey vorliegt.
| |
| * Weitere Informationen enthält die [https://wiki.ubuntuusers.de/Manpage/ Manpage] zu GoCryptFS.
| |
| | |
| ==== 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.
| |
| <syntaxhighlight lang="bash">
| |
| gocryptfs -masterkey=stdin
| |
| </syntaxhighlight>
| |
| | |
| Mit der Option <tt>-masterkey <Masterkey></tt> können die verschlüsselten Daten, z. B. über ein Skript, ohne Konfigurationsdatei geöffnet werden.
| |
| * Hierbei kann der Masterkey mit <tt>ps -auxwww</tt> aus dem Hauptspeicher ausgelesen werden
| |
| * Dieses Risiko liegt bei der Option <tt>-masterkey=stdin</tt> nicht vor.
| |
| | |
| === Verzeichnis zum Speichern von GoCryptFS-Konfigurationsdateien erstellen ===
| |
| <syntaxhighlight lang="bash">
| |
| mkdir ~/.config/gocryptfs/
| |
| </syntaxhighlight>
| |
| | |
| === Verzeichnisse CIPHERDIR und KLARTEX anlegen ===
| |
| <syntaxhighlight lang="bash">
| |
| mkdir ~/CIPHERDIR ~/MOUNTPOINT
| |
| </syntaxhighlight>
| |
| | |
| === GocryptFS initialisieren ===
| |
| Ohne die Option <tt>-config</tt> wird die Konfigurationsdatei als '''~/CIPHERDIR/gocryptfs.conf''' gespeichert.
| |
| <syntaxhighlight lang="bash">
| |
| gocryptfs -init -config ~/.config/gocryptfs/KONFDATEI.conf -reverse ~/CIPHERDIR
| |
| </syntaxhighlight>
| |
| | |
| === Verzeichnis CIPHERDIR einhängen ===
| |
| Im Reverse Mode können Dateien mit den Optionen <tt>-exclude</tt>, <tt>-exclude-wildcard</tt> und <tt>-exclude-from</tt> 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.
| |
| <syntaxhighlight lang="bash">
| |
| gocryptfs -config ~/.config/gocryptfs/KONFDATEI.conf -reverse ~/MOUNTPOINT ~/CIPHERDIR
| |
| </syntaxhighlight>
| |
| | |
| === Datensicherung durchführen ===
| |
| <syntaxhighlight lang="bash">
| |
| cp -a ~/CIPHERDIR ~/BACKUP
| |
| </syntaxhighlight>
| |
| | |
| === CIPHERDIR aushängen ===
| |
| <syntaxhighlight lang="bash">
| |
| fusermount -u ~/CIPHERDIR
| |
| </syntaxhighlight>
| |
| | |
|
| |
|
| <noinclude> | | <noinclude> |
GoCryptFS - ein FUSE-Dateisystem zur Kryptografie auf Dateiebene
Beschreibung
- Alternative zu EncFS, eCryptfs
- Linux, OS X, Windows
Hintergründe
Die Kryptografie 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 Kryptografie bietet mögliche Angriffswege.
- Daher wird die Sicherheit der Kryptografie 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 Kryptografie 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 CIPHERDIR verschlüsselt gespeichert.
- Der Inhalt von CIPHERDIR wird im Verzeichnis MOUNTPOINT über das FUSE Dateisystem entschlüsselt zum lesen und schreiben angezeigt, wenn MOUNTPOINT eingehängt ist.
Reverse Mode
Im Reverse Mode wird der Inhalt von CIPHERDIR über das FUSE-Dateisystem „read-only“ angezeigt, wenn dieses eingehängt ist.
Installation
sudo apt install gocryptfs
Syntax
Optionen
Common Options (use -hh to show all)
Option |
Beschreibung
|
-aessiv
|
AES-SIV-Kryptografie verwenden (mit -init)
|
-allow_other
|
Anderen Benutzern den Zugriff auf die Halterung erlauben
|
-i, -idle
|
Automatisches Aushängen nach festgelegter Leerlaufzeit
|
-config
|
Benutzerdefinierter Pfad zur Konfigurationsdatei
|
-ctlsock
|
Steuersteckdose am Standort erstellen
|
-extpass
|
Externes Programm aufrufen, um nach dem Passwort zu fragen
|
-fg
|
Bleib im Vordergrund
|
-fsck
|
Dateisystemintegrität prüfen
|
-fusedebug
|
FUSE-Aufrufe debuggen
|
-h, -help
|
Dieser kurze Hilfetext
|
-hh
|
Langer Hilfetext mit allen Optionen
|
-init
|
Verschlüsseltes Verzeichnis initialisieren
|
-info
|
Informationen zum verschlüsselten Verzeichnis anzeigen
|
-masterkey
|
Mount mit explizitem Hauptschlüssel statt Passwort
|
-nonempty
|
Mounten über nicht leeres Verzeichnis zulassen
|
-nosyslog
|
Leiten Sie Protokollnachrichten nicht an syslog um
|
-passfile
|
Passwort aus Datei lesen
|
-passwd
|
Kennwort ändern
|
-plaintextnames
|
Dateinamen nicht verschlüsseln (mit -init)
|
-q, -quiet
|
Informationsnachrichten stummschalten
|
-reverse
|
Rückwärtsmodus aktivieren
|
-ro
|
Schreibgeschützt einbinden
|
-speed
|
Führen Sie einen Krypto-Geschwindigkeitstest durch
|
-version
|
Print version information
|
--
|
Optionsparsing stoppen
|
Parameter
Umgebungsvariablen
Exit-Status
Dateien
Anwendung
GoCryptFS/Anwendung
Anhang
Siehe auch
Dokumentation
Man-Pages
Info-Pages
Links
Projekt
- Projektseite: https://nuetzlich.net/gocryptfs/
- Quellcode und Dokumentation: https://github.com/rfjakob/gocryptfs
Weblinks
- 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