So geben Sie das Kennwort einer .gpg-Datei nur beim Öffnen ein

17

(Ich verstehe die Auswirkungen der folgenden Sicherheitsaspekte und bin damit einverstanden.)

Ich habe eine einzige verschlüsselte Datei in meinem Organisationsverzeichnis diary.org.gpg. Ich habe noch nie eine spezielle Konfiguration vorgenommen, damit es funktioniert

  1. Wann immer ich die Datei besuche, werde ich aufgefordert, das Verschlüsselungskennwort einzugeben. Was toll ist.
  2. Immer wenn ich den Puffer speichere, werde ich zweimal zur Eingabe des Passworts aufgefordert. Welches ist mein Problem .

Beachten Sie, dass ich nichts konfiguriert habe, damit dies funktioniert. Daher müssen Antworten zu Agenten oder Schlüsselringen mit Konfigurationsanweisungen geliefert werden.

Ich dachte daran, das Passwort irgendwo in der Datei zu speichern (an der Kopfzeile oder in den Endekommentaren). Wenn ich dann speichere, könnte Emacs das Kennwort im Puffer lesen und verwenden, anstatt mich dazu aufzufordern. Aber als ich anfing, mich damit zu befassen, verirrte ich mich irgendwo in mir epa.el.

F: Wie kann ich beim Speichern des Puffers ein Kennwort direkt von Emacs an das Verschlüsselungssystem / den Verschlüsselungsprozess senden, anstatt dazu aufgefordert zu werden?

Den Rest (das Passwort im Puffer finden) kann ich selbst herausfinden. Ich habe mich gerade verlaufen, als ich versucht habe zu verstehen, wie Emacs mit gpg zusammenarbeitet.

Beachten Sie, dass ich unter Ubuntu, Arch Linux und Windows arbeite. Deshalb war meine erste Idee eine Emacs-zentrierte Lösung.
Ich kann mit einer Lösung leben, die unter Windows nicht funktioniert, solange ich manuell auf die Datei zugreifen kann.

Malabarba
quelle
Ich denke das: orgmode.org/worg/org-tutorials/encrypting-files.html#sec-5 ist was du willst (der gpg-agent).
wvxvw
@wvxvw Vielleicht. Es sagt nichts über das Speichern aus, also muss ich es versuchen.
Malabarba
Um ehrlich zu sein, haben GPG und verwandte Programme eine bemerkenswert schlechte Benutzeroberfläche. Es ist wirklich schwierig, einen Sinn für die Funktionsweise der Benutzeroberfläche oder der Dokumentation zu finden. Aber ich verstehe den Zweck von gpg-agentso, dass es ähnlich ist, ssh-agentnur die Passwörter zu speichern, die Sie haben, sobald Sie es aktivieren. Sie werden also weder beim Öffnen noch beim Speichern zur Eingabe des Kennworts aufgefordert (solange sich der Agent an das Kennwort erinnert), aber ich denke nicht, dass dies auf die Passphrase zutrifft, die irgendwie dumm ist , Wenn wahr.
wvxvw
Sie möchten wahrscheinlich gpg-agentrichtig einrichten , damit der Schlüssel für eine Weile zwischengespeichert wird? :)
Günther Noack
1
@wvxvw Vielleicht war das früher der Fall? Ich fand die Manpages der Tools ziemlich detailliert und die (CLI) -Schnittstelle ist das, was man normalerweise von terminalbasierten Programmen erwartet.
Legends2k

Antworten:

12

Verschlüsselung mit Passwort + Schlüssel

Dadurch wird das Kennwort nicht direkt in der Datei gespeichert, sondern es wird ohne Sicherheitsrisiko etwas Ähnliches ausgeführt, sodass Sie das erreichen, was Sie möchten.

  • Sie müssen eine asymmetrische Verschlüsselung verwenden, damit Ihr Kennwort mit einer E-Mail-ID in einem Schlüsselbund verknüpft ist .

  • Speichern Sie das unten stehende oben in Ihrer .gpg-Datei

-*- epa-file-encrypt-to: ("[email protected]") -*-

Das Passwort wird beim ersten Speichern / Erstellen der Datei abgefragt. Danach wird das Kennwort jedoch nur einmal beim Öffnen der gespeicherten Datei abgefragt

Der einzige Haken ist, dass Sie die ~/.gnupg/standardmäßig gespeicherte Schlüsselbunddatei nicht verlieren dürfen .

GPG-Setup

Emacs Setup

In Emacs ist hierfür kein Setup erforderlich.

Systemkonfiguration

Sie müssen jedoch Ihre Systemumgebung mit wenigen Bibliotheken vorbereiten, damit die GPG-Funktion funktioniert.

Zum Zeitpunkt der Einrichtung musste ich Folgendes installieren:

  • gpgme-1.5.3
  • libgpg-error-1.17
  • libksba-1.3.2
  • libassuan-2.2.0
  • libgcrypt-1.6.2
  • gnupg-2.0.26
  • Pinentry-0.9.0

Ich brauchte eine oder zwei der oben genannten Bibliotheken, und am Ende installierte ich die anderen, da es sich entweder um obligatorische oder optionale Abhängigkeiten handelte.

Sobald alles installiert ist, machen Sie

> gpg --gen-key

Und generieren Sie einen Schlüssel, der niemals abläuft, und verknüpfen Sie ihn mit Ihrem richtigen Namen und Ihrer E-Mail-Adresse.

Der generierte Schlüssel wird in Ihrem ~/.gnupg/Verzeichnis gespeichert .

Ändern der Schlüsselringposition

Sie können den Speicherort des Schlüsselbunds ändern $GNUPGHOME, indem Sie die Optionen für --homediroder ändern .--keyringgpg

Von man gpg:

--keyring file

Datei zur aktuellen Liste der Schlüsselringe hinzufügen. Wenn die Datei mit einer Tilde und einem Schrägstrich beginnt, werden diese durch das Verzeichnis $ HOME ersetzt. Wenn der Dateiname keinen Schrägstrich enthält, wird angenommen, dass er sich im GnuPG-Ausgangsverzeichnis befindet ("~ / .gnupg", wenn --homedir oder $ GNUPGHOME nicht verwendet werden).

Beachten Sie, dass dadurch ein Schlüsselring zur aktuellen Liste hinzugefügt wird. Wenn nur der angegebene Schlüsselring verwendet werden soll, verwenden Sie --keyring zusammen mit --no-default-keyring.

GPG mit Emacs verwenden

In Emacs erstellen Sie einfach eine Datei mit einer .gpgErweiterung. Wenn die Datei beispielsweise ursprünglich war auth.el, würden Sie sie in umbenennen auth.el.gpg.

Platzieren Sie diese Zeile oben in der Datei:

;; -*- epa-file-encrypt-to: ("[email protected]") -*-

Beachten Sie, dass ich die Elisp-Kommentarzeichen ;;als Beispieldatei hier verwendet habe auth.el.gpg.

Verwenden Sie die genaue E-Mail-Adresse, die Sie zum Zeitpunkt der Schlüsselerstellung verwendet haben.

Wenn Sie versuchen, es zu speichern, zeigt emacs diese Eingabeaufforderung in einem Puffer an:

Select recipients for encryption.
If no one is selected, symmetric encryption will be performed.  
- `m' to mark a key on the line
- `u' to unmark a key on the line
[Cancel][OK]

  u <GPG KEY> <YOUR NAME> (<YOUR GPG KEY NAME>) <<YOUR GPG KEY EMAIL>>

Navigieren Sie mit dem Mauszeiger zu der Zeile, in der sich die Taste befindet, und drücken Sie m.

Navigieren Sie mit dem Punkt zur [OK]Schaltfläche und drücken Sie <return>.

Sie können die Datei jetzt speichern und den Dateipuffer löschen.

Wenn Sie diese .gpg-Datei das nächste Mal öffnen, werden Sie nur einmal zur Eingabe des Kennworts aufgefordert, und aufeinanderfolgende Speichervorgänge sind ohne Kennworteingabe möglich.

Mehr Info

  • Hier ist einer der Blog-Posts, der sich mit dem Emacs- und GPG-Setup befasst, auf das Sie ebenfalls verweisen können.
  • EasyPG - emacswiki.org
Kaushal Modi
quelle
Kann ich die verschlüsselte Datei mit dem üblichen Passwort öffnen, wenn ich die Schlüsselringdatei verliere, oder ist sie für immer verloren?
Malabarba,
@Malabarba Das habe ich nicht ausprobiert, aber ich glaube, es ist für immer verloren. Das Gute ist jedoch, dass diese Datei nur einmal generiert wird, wenn Sie einem Schlüsselringelement eine E-Mail und ein Kennwort zuordnen. Es wird nach diesem ersten Mal nicht mehr geändert, bis Sie weitere Schlüsselbundelemente hinzufügen (mehr Kennwort- und E-Mail-Paare). Ich bewahre einfach Backups dieser Datei auf einem USB-Stick und einer Dropbox auf und stelle sicher, dass das Passwort super sicher ist.
Kaushal Modi
Ich habe die symmetrisch verschlüsselten Dokumente als portabel getestet. Ich habe etwas in Emacs unter Linux verschlüsselt und es mit einem der vielen kostenlosen GPG-Entschlüsselungstools geöffnet, die für Windows verfügbar sind. Es hat nach dem Schlüsselbund gefragt und auf mein Backup in Dropbox verwiesen und es hat funktioniert.
Kaushal Modi
Nur zu Ihrer Information: Ja, wenn Sie die Schlüsseldatei verlieren, verlieren Sie dauerhaft auch den Zugriff auf Ihre verschlüsselten Dateien. Sie benötigen sowohl das Kennwort als auch die private Schlüsseldatei, um sie zu entschlüsseln. Dies ist Teil des GPG-Sicherheitsmodells für asymmetrische Verschlüsselung.
Tyler
Sieht so aus, als müsste ich doch mit dieser Antwort weitermachen. Wissen Sie, wie ich den Speicherort der Schlüsselringdatei ändern kann?
Malabarba,
9

Es stellte sich heraus, dass ich nur tun musste

(setq epa-file-cache-passphrase-for-symmetric-encryption t)

Diese Lösung funktioniert sowohl unter Linux als auch unter Windows und wurde von Ted und Michael bei help-gnu-emacs zur Verfügung gestellt.

Malabarba
quelle
Gut zu wissen, dass das bei Ihnen funktioniert! Ich hatte diese Einstellung jahrelang in meiner Emacs-Konfiguration, aber irgendwann funktionierte sie einfach nicht mehr. Ich vermute, dass es mit der Verwendung des Gnome-Keyring-Daemons (der auch als GPG-Schlüsselring fungiert) zu tun hat.
Paprika
4
Aus dem Docstring für epa-file-cache-passphrase-for-symmetric-encryption : "Beachten Sie, dass diese Option keine Auswirkung hat, wenn Sie GnuPG 2.0 verwenden."
Wilfred Hughes