Following my recent blogpost series about Thunderbird, I’d like to show you my GnuPG configuration today. I’m for sure no expert, so feedback on improvements is highly welcome. I run GPGTools on OS X, but this guide should be applicable to all recent versions of GnuPG.
Generating a safe key pair
For generating a safe key pair, I recommend reading Alex Cabal’s blogposting, which was a tremendous help to me.
The GnuPG configuration
GnuPG’s configuration is done in ~/.gnupg/gpg.conf, a file that is read each time GnuPG is started. Note that external wrappers like Enigmail can overwrite some of the settings at runtime by using individual command-line parameters.

Let’s now have a look at my configuration file, line by line:
charset utf-8
This sets the character set of the input files to UTF-8, which should be the default encoding on most modern systems.
keyserver hkps://hkps.pool.sks-keyservers.net
This configures a default keyserver for public key retrieval.
personal-digest-preferences SHA512 cert-digest-algo SHA512 default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
This configures SHA512 hashing, to avoid using weak algorithms.
no-emit-version no-comments
Agreeably a bit of security by obscurity, this disables not only the output of GnuPG’s version, but also completely disables the comment field that is used to display the software’s name and operating system.
no-greeting
This omits the greeting message when GnuPG is invoked on the command line.
default-key 0x12345678
This sets the default key used for signing messages. 0x12345678 should be replaced by your key ID, of course. Note: You can also use the 16-character display of your key here, as provided by the 0xlong keyid-format.
default-recipient-self
With the help of this option, your own key (see above) is used as default recipient for encrypted messages in case no other one is provided.
encrypt-to 0x12345678
This setting can be used to encrypt all messages additionally with your own key, next to the original recipient one’s. 0x12345678 should be replaced by your key ID, of course. Note: You can also use the 16-character display of your key here, as provided by the 0xlong keyid-format.
keyid-format 0xlong
To display key IDs in their long format (16 instead of 8 characters), use this setting.
How to group recipients
When you regularly encrypt files for the same recipients, like your colleagues, the group feature comes in handy. In gpg.conf you can define a set of keys and assign an identifier to them:
group colleagues=0x12345678 0x23456789 0x34567890
This creates the group colleagues with three keys. To now encrypt files with these keys, you can use
gpg --always-trust --recipient colleagues --encrypt-files file1 file2 file3
What else?
Right now, I’m looking into using my external key token as storage for my private key. An interesting side-effect of this is to use the same key as SSH authentication token – but those topics will most likely be covered in a separate blogpost in the future.
I just discovered that when I set “keyid-format 0xlong” a key upgrade from within Enigmail doesn’t work – the keyserver doesn’t recognize the long IDs. Temporarily disabling the setting helped.
Ich muss da nochmal eine Stufe vorher ansetzen. Ich denke, ich verstehe das Problem, um dass es im Artikel von Alex Cabal geht.
Er schreibt, der Schlüssel soll nicht zu lange gültig sein. Kann ich denn nach Anlauf des Schlüssels meine E-Mails noch lesen im Posteingang und Ausgang? (Wenn ich die E-Mail lokal speichere (*.eml). wirkt dann die Verschlüsselung auch noch?)
Damit jemand anderes Unfug machen kann, brauch er aber das Passwort für meinen privaten Schlüssel, oder? Dann kann er aber das Passwort ändern und mich so aussperren und gleichzeitg als ich mailen?
Bekommt man nach Ablauf des Schlüssels einer anderen Person dann automatisch den Neuen von dieser, wenn diese einen erstellt haben sollte?
Dann versuche ich mal, etwas Licht ins Dunkel zu bringen :-)
– Wenn der Schlüssel abgelaufen ist, kannst du damit nicht mehr unterschreiben und andere können damit nicht mehr verschlüsseln, bestehende Mails kannst du aber problemlos entschlüsseln und deine Signatur auf alten Mails kann ebenfalls verifiziert werden.
– Wenn du die Mails lokal speicherst sind sie ebenfalls verschlüsselt, außer du entschlüsselst dauerhaft – das geht in neueren Enigmail-Versionen.
– Um deinen Schlüssel zu benutzen wird sowohl die Schlüsseldatei als auch das Passwort benötigt. Die Schlüsseldatei ist lokal damit verschlüsselt, d.h. eine Änderung auf einem anderen Rechner wirkt sich nicht auf deine gespeicherte Kopie aus. Du könntest sogar im Büro ein anderes Passwort als zuhause haben, bei jeweils demselben Schlüssel.
– Man kann Schlüssel wohl auch verlängern, das hab ich aber noch nie probiert – meiner hat kein Ablaufdatum drin. Ein Grund ist, dass die Leute den neuen Schlüssel dann erst aktiv holen müssen, indem sie den Keyserver befragen. Ich bekomme heute teils noch E-Mails, die mit meinem alten Schlüssel verschlüsselt werden, obwohl er als zurückgezogen gelistet ist. Die Absender haben einfach ihren Schlüsselbund noch nicht aktualisiert, automatisch passiert das nicht.
Danke :-)
Also muss man die Passphrase ein leben lang behalten … Uiuiui
Ah, ok. Das heißt der böse Bube muss also dann dass passende Passwort haben und nicht eins von einem anderen Rechner …
Aber es heißt doch, dass man mit dem Zurückziehschlüssel es unmöglich macht, ihn noch zu verwenden …
Die Passphrase kannst du jederzeit ändern. Die hat aber auch nichts mit dem Ablauf des Schlüssels zu tun, das sind zwei verschiedene Dinge. ;-)
Und, ja, das Zurückziehen soll ja gerade dafür sorgen, dass er nicht mehr genutzt wird.
Behalten meinte nicht “muss die gleiche bleiben” sondern man muss immer die passende Passphrase behalten.
Und wie können dann Leute die noch nutzen?
Ich hab ja mehrere E-Mail-Konten. Nehmen ich da aus deiner persönlichen Sicht besser einen Schlüssel mit lauter Unterschlüsseln für die einzelnen E-Mail-Konten (jeweils für jeden Rechner eigene wiederum) und packe den Hauptschlüssel dann mit dem Rückrufschlüssel auf einen USB-Stick o. ä. und verstecke das irgendwo?
Was mich gerade auch noch wundert ist, dass ich mit dem Schlüssel einer anderen E-Mail-Adresse unterschreiben kann und den Schlüssel anhängen kann. Wobei ich auch noch herausfinden muss, was der Unterschied der beiden Funktionen ist.
Das Thema wirklich zu durchdringen, um es wirklich richtig anwenden zu können (nicht, dass man sich in falscher Sicherheit wiegt), ist gar nicht so einfach. Vor 10 Jahren oder mehr wollte ich das schon angehen, aber es war nicht mal so eben getan.
Du musst unterscheiden zwischen öffentlichem und privatem Schlüssel – nur der öffentliche wird an die Mail angehängt. Der Unterschied zwischen Public und Private Key ist essentiell. ;-) Besser als den Schlüssel anhängen ist ohnehin, ihn auf einen Keyserver zu laden.
Der Unterschied ist mir schon klar, keine Sorge. Ich sinniere noch über den Unterschied von Schlüssel anhängen/mit Key-Server zur Verfügung stellen und Unterschreiben nach. Auch das werde ich noch herausfinden …
Ich hatte früher die Variante mit einem Schlüssel pro Konto, mittlerweile füge ich das als Identitäten zu einem Hauptschlüssel hinzu. Ich arbeite allerdings anhand der verlinkten Anleitung von Alex Cabal, mit verschiedenen Unterschlüsseln. Doppelt und dreifach gesichert an sicheren Orten. ;-)
Also für mich fasse ich das so zusammen:
1) E-Mail-Adresse wie gnupg@wasanderesalseffenberger.org anlegen. Wenn sich jemand die Adresse aus dem Keyserver fischt, kann er die zuspammen wie er will, weil ich sie eh nicht weiter abrufe oder nur gelegentlich von einer Live-CD um den Spam zu löschen. Oder ist es wichtig, dass man diese Adresse regelmäßig liest?
2) Unterschlüssel anlegen nach der Anleitung jeweils für den Laptop und den PC.
3) Privaten und öffentlichen Hauptschlüssel und die jeweiligen Subschlüssel auf CD brennen und in ein Tresor o. ä. packen und die beiden Hauptschlüssel von des Festplatte löschen. Die Subschlüssel für den Laptop auf den Laptop verschieben. Zur Sicherheit eine zweite CD brennen als Absicherung gegen eine defekte CD. Wenn man ein gutes Gedächtnis hat, verschlüsselt man den Key noch mit einem anderen Passwort in einem TrueCrypt-Container o. ä. Die Passphrase von GNU speichert man nirgends und schreibt sie nirgends auf.
4) Wenn was schief geht oder so, widerrufe ich z. B. die Laptop-Subschlüssel vom PC aus wenn der Laptop gestohlen wird oder umgekehrt vom Laptop die PC-Subschlüssel wenn während meiner Abwesenheit der Geheimdienst an meinem PC war. Dann kann man mit den Subschlüsseln nichts mehr verschlüsseln, nur noch lesen.
5) Auf einen Keyserver packe ich den einen öffentlichen Hauptschlüssel und Flo ist zufrieden. Und den kommuniziere ich dann unabhängig von der e-Mail-Adresse?
Jetzt muss ich mir nur noch überlegen wie ich über die vielen Mailkonten jeweils zwei Passphrasen behalten soll … Oder habe ich das falsch verstanden und es bleibt eine Passphrase?