E-Mails und GPG über die Konsole
Manchmal befindet man sich in der Situation, dass man eine E-Mail mit GPG verschlüsseln oder unterschreiben möchte, aber nur einen Webclient zur Verfügung hat. Aber es geht auch ohne Thunderbird und Enigmail.
Die folgende Anleitung demonstriert einen simplen Workflow mit GPG in der Konsole. Mit den gleichen Methoden lassen sich natürlich auch andere Texte verschlüsseln, die E-Mail als Kontext stellt nur einen spezifischen Use-Case da.
Voraussetzungen
Natürlich ist GPG bereits installiert und eingerichtet. Man hat bereits ein eigenes Schlüsselpaar erzeugt und den öffentlichen Schlüssel des Empfängers importiert. Außerdem sollte man ungefähr wissen, wozu GPG gut ist und warum man das nutzen möchte.
Die Nachricht verfassen
Grundsätzlich gibt es zwei Methoden eine Nachricht zu verfassen:
- In Ruhe in einem Texteditor verfassen
- Direkt über stdin (Standardeingabe) eingeben
Möglichkeit 1 bietet die größte Flexibilität, erfordert jedoch das Anlegen einer Datei (da die wenigsten Texteditoren beim Schließen ihren Inhalt nach stdout ausgeben).
Möglichkeit 2 hat den Nachteil, dass man nicht mehr in vorherige Zeilen zurückwechseln kann. Die Eingabe beendet man dann mittels Enter und Strg+D.
In den folgenden Abschnitten sind in dieser Reihenfolge jeweils Befehle für beide Methoden angegeben. email.txt steht dabei für die in Methode 1 erstellte Datei.
Nachricht verschlüsseln
$ gpg --encrypt --armor email.txt
$ gpg --clearsign --armor
Nun wird man nach den Empfängern gefragt. Hier kann man entweder die Schlüssel-ID eingeben oder den Namen (gerne auch einen Teil davon, sofern er eindeutig ist). Jeden Empfänger bestätigt man mit Enter. Idealerweise fügt man sich selbst auch hinzu, damit man die Nachricht später selbst entschlüsseln kann.
Nachricht signieren
Hierbei muss sichergestellt werden, dass die Nachricht nach dem Signieren nicht verändert wird. Dies findet beim Senden von E-Mails oftmals statt, da eine Zeilenlänge von 76 Zeichen nicht überschritten werden soll.
$ fold -s -w 76 email.txt | gpg --clearsign
$ fold -s -w 76 | gpg --clearsign
Alternativ kann man den Text neu kodieren, sodass zum Beispiel Zeilenumbrüche keine Probleme mehr machen (unterschiedliche Systeme können unterschiedliche Kodierungen für den Zeilenumbruch verwenden, wodurch die Signatur ungültig werden kann).
$ gpg --clearsign --textmode email.txt
$ gpg --clearsign --textmode
Der Nachteil davon ist, dass man den Text nicht mehr ohne GPG kann.
Nachricht entschlüsseln
$ gpg --decrypt email.txt
$ gpg --decrypt
Man wird nun ggf. nach seinem Passwort gefragt, anschließend bekommt man die entschlüsselte Nachricht und ggf. eine Meldung, ob die Signatur korrekt ist.
Signatur überprüfen
$ gpg --verify email.txt
$ gpg --verify
Das ist auch schon alles.
Arbeiten mit der Zwischenablage
An der ein oder anderen Stelle ist es notwendig, den Text in die Zwischenablage zu kopieren oder ihn daraus einzufügen. Man kann dies mit dem Programm xsel automatisieren.
Möchte man den Inhalt der Zwischenablage ausgeben, so verwendet man xsel -ob
, zum Beispiel:
$ xsel -ob | gpg --verify
Viel praktischer ist es aber, die Ausgabe von gpg direkt in die Zwischenablage zu kopieren. Dies geht mit xsel -ib
, zum Beispiel:
$ fold -s -w 76 | gpg --clearsign | xsel -ib