Installieren? Einrichten? Gibt's das nicht im Browser? Leider noch nicht! Privatsphäre und Sicherheit gibt es nicht geschenkt. Aber alles halb so wild: Im folgenden Artikel zeige ich, wie man OpenPGP mit wenigen Handgriffen unter Windows aufsetzt. Einmal arbeiten und immer nutzen, das klingt doch nicht schlecht, oder? Also – los geht's!
Dieser Artikel ist Teil der Serie "OpenPGP im Berufsalltag". Du möchtest auch die anderen Artikel lesen? Hier geht es zur Übersicht.
Wir benutzen gpg4win. Den Download sollten wir natürlich, wie im 2. Teil der Serie beschrieben, auf Echtheit prüfen.
Haben wir diese Hürde genommen, können wir den Installer als Administrator starten. Obwohl wir das Tool auch als normaler User installieren könnten, ist die Installation "mit root-Rechten" vorteilhaft, weil gpg
dann wichtige Hintergrunddienste einrichten und Umgebungsvariablen setzen kann. Also: Rechtsklick auf den Installer --> Als Administrator ausführen.
Bei der Komponentenauswahl beschränken wir uns erstmal auf die Kernkomponente GnuPG. Optional könnten wir noch installieren:
gpg
GUI-Client, für E-Mail allerdings nicht benötigt.
Für das Installationsverzeichnis übernehmen wir den Vorschlag und klicken endlich auf Installieren.
Damit ist gpg
bereits fertig installiert und funktionsfähig. Öffnen wir nun eine Konsole und geben gpg --version
ein, erhalten wir eine Funktionsübersicht:
gpg (GnuPG) 2.2.7 libgcrypt 1.8.2 Copyright (C) 2018 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Home: C:/Users/mosig_user/AppData/Roaming/gnupg Supported algorithms: Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256 Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224 Compression: Uncompressed, ZIP, ZLIB, BZIP2
Bitte nicht wundern: Die dort gelisteten Programmversionen können von der Version des Downloads abweichen, da Download und enthaltene Komponenten jeweils eigene Versionen besitzen.
Unter Umständen kann es sein, dass gpg
auf der Konsole nicht gefunden wird. In diesem Fall müssen wir das Verzeichnis bin
, das sich unter dem Installationsverzeichnis befindet, zum Suchpfad für ausführbare Dateien hinzufügen. Wie das geht, habe ich in Teil 2 der Serie beschrieben.
Die Ausgabe von gpg --version
zeigt uns außerdem ein interessantes Detail:
Home: C:/Users/mosig_user/AppData/Roaming/gnupg
Dies ist das Verzeichnis, in dem gpg
seine Konfiguration und den Schlüsselring ablegt. Unter Windows ist es alles andere als bequem, auf Dinge unterhalb von AppData
zuzugreifen. Aus diesem Grund lohnt sich die Festlegung eines anderen Home-Verzeichnisses nach der Installation von gpg
:
C:\Users\DeinUser\gnupg
.C:\Users\DeinUser\AppData\Roaming\gnupg
in das neue Verzeichnis.GNUPGHOME
und geben ihr das neue Verzeichnis als Wert.gpg --version
, ob die Änderung wirksam geworden ist.Die Ausgabesprache von gpg
lässt sich leicht ändern. Sie wird durch die Umgebungsvariable LANG
bestimmt. Akzeptierte Werte sind sogenannte ISO-2-Ländercodes, z. B. steht de
für Deutsch, en
für Englisch. Entweder wir setzen diese Variable – wie in Teil 2 beschrieben – oder nur für die Lebensdauer der Konsole ("temporär") mittels set LANG=de
.
Fast geschafft! Was jetzt noch fehlt, ist eine auf Sicherheit optimierte Konfiguration. Die Datei GNUPGHOME\gpg.conf
enthält jede Menge Einstellungen, die das Verhalten von gpg
im Detail steuern. Ich empfehle folgende Konfiguration, die ich von Thierry Thuon und den Best-Practices von RiseUp entlehnt habe:
# Avoid information leaked when exporting keys no-emit-version no-comments export-options export-minimal # Displays the long format of the ID of the keys and their fingerprints keyid-format 0xlong with-fingerprint # Show UID validity in key listings list-options show-uid-validity verify-options show-uid-validity # Use the strongest known algorithms if possible personal-cipher-preferences AES256 personal-digest-preferences SHA512 default-preference-list SHA512 SHA384 SHA256 RIPEMD160 AES256 TWOFISH BLOWFISH ZLIB BZIP2 ZIP Uncompressed cipher-algo AES256 digest-algo SHA512 cert-digest-algo SHA512 compress-algo ZLIB # Is considered broken and therefore not used anymore disable-cipher-algo 3DES # Since many keys come with SHA1 signatures only,
# we need to disable this in order to being able to import them anymway. #weak-digest SHA1 s2k-cipher-algo AES256 s2k-digest-algo SHA512 s2k-mode 3 s2k-count 65011712 # Always use the following keyserver keyserver hkps://hkps.pool.sks-keyservers.net # Do not use the unencrypted hkp protocol anymore #keyserver hkp://pool.sks-keyservers.net # Don't allow keys to specify preferred keyservers keyserver-options no-honor-keyserver-url # Include revoked keys in search results keyserver-options include-revoked
Wir kopieren einfach den Inhalt nach GNUPGHOME\gpg.conf
und fertig. gpg
ist jetzt ausreichend eingerichtet und kann genutzt werden.
Als nächstes sollte man seine private Schlüssel generieren. Wie das geht, erkläre ich im nächsten Teil. Erst danach lohnt sich das Aufsetzen eines E-Mail-Clients in Verbindung mit OpenPGP so richtig. Wer nicht warten mag, der kann der sehr guten Anleitung von posteo.de zur Einrichtung von Thunderbird+Enigmail folgen. Obwohl dort auch die Generierung der Schlüssel über Enigmail beschrieben wird, empfehle ich, dies auf der Konsole zu erledigen. Zum einen kann man dabei etwas lernen und zum anderen gibt es – wie immer – einige Details zu beachten, aber dazu mehr im nächsten Teil.
Sollte es bei der Arbeit mit gpg zu Fehlern kommen, ist es möglich, sich Fehlerinformationen ausgeben oder in Dateien schreiben zu lassen. Zur Anwendung und Auswertung benötigt man bereits fortgeschrittene Kenntnisse, ich möchte es aber der Vollständigkeit halber (und weil ich es selbst immer vergesse) hier vorstellen.
Erste Maßnahme könnte die Aktivierung der "ausführlichen Ausgabe" sein. Dies bezeichnet man im Englischen als "being verbose" und wird mit dem Schalter -v
aktiviert:
# Verbose example with verify command gpg -v --verify gpg4win-3.1.1.exe.sig gpg4win-3.1.1.exe
Den Schalter gibt es in drei Stufen. Je mehr v
angehangen werden, desto ausführlicher wird die Ausgabe:
# Even more verbose example with verify command gpg -vv --verify gpg4win-3.1.1.exe.sig gpg4win-3.1.1.exe # Most verbose example with verify command gpg -vvv --verify gpg4win-3.1.1.exe.sig gpg4win-3.1.1.exe
Aber halt, es gibt neben dem Verbose-Schalter noch einen extra Schalter für noch ausführlicheren debug-Output (Engl. debug = Fehlerbereinigung): --debug
. Die gpg
-Dokumentation schreibt:
--debug flags Set debugging flags. All flags are or-ed and flags may be given in C syntax (e.g. 0x0042). --debug-all Set all useful debugging flags.
Ich nutze immer --debug-all
, weil ich die Flags nicht kenne und mir auch nicht merken möchte:
# *Very* detailed output gpg --debug-all --verify gpg4win-3.1.1.exe.sig gpg4win-3.1.1.exe # You may also combine with -v to get *ultra* detailed output gpg -vvv --debug-all --verify gpg4win-3.1.1.exe.sig gpg4win-3.1.1.exe
Die genaue Ausgabe von -v
und --debug
hängt von der verwendeten gpg
-Funktionalität ab. Im Allgemeinen ist es ratsam, mit -v
zu beginnen, und sich dann langsam an das gewünschte Maß heranzutasten.
Ein Teil der Funktionalität von gpg
wird über Hintergrunddienste (engl. Bezeichnung: Daemons) bereitgestellt. Zu diesen gehören:
dirmngr
– Kümmert sich um Kommunikation mit Schlüsselservern.gpg-agent
– Stellt die gpg
-Funktionalität anderen Programmen zur Verfügung, z. B. Enigmail.sc-daemon
– Stellt Funktionen zum Umgang mit SmartCards, z. B. Yubikey, bereit.Jeder dieser Dienste kann optional eine eigene Konfigurationsdatei in GNUPGHOME
besitzen:
dirmngr.conf
gpg-agent.conf
scdaemon.conf
Über diese Dateien kann man auf Wunsch Debug-Ausgaben in Textdateien aktivieren. Dazu fügt man Folgendes in die Dateien ein:
debug-level guru debug-all log-file debug.log
Für die Logdatei lohnt sich meist die Angabe eines absoluten Pfads, um bessere Kontrolle über deren Ablageort zu haben.
So seltsam es klingt: Bei der Änderung von Konfigurationsdateien oder sonstigen Problemen sollte man zunächst einen Neustart der Hintergrunddienste vornehmen. Auf der Konsole geht das so:
dirmngr: gpgconf --kill dirmngr # Automatischer Neustart bei Bedarf
gpg-agent: gpg-connect-agent reloadagent /bye
scdaemon: gpgconf --reload scdaemon
Damit ist auch der Exkurs in die Debugging-Welt abgeschlossen. Weiter geht es im nächsten Teil der Serie mit der Schlüsselerzeugung.