GnuPG (GNU Privacy Guard) ist die freie Implementierung des OpenPGP-Standards. Damit lassen sich E-Mails und Dateien signieren und verschlüsseln. Die Signatur beweist, dass die Nachricht vom angegebenen Absender stammt und nicht verändert wurde. Die Verschlüsselung stellt sicher, dass nur der Empfänger den Inhalt lesen kann.
Schlüsselpaar erstellen
Ein neues Schlüsselpaar wird interaktiv erstellt:
gpg --full-generate-key
Als Algorithmus Ed25519 wählen. Das ist eine elliptische Kurve von Daniel J. Bernstein, deutlich schneller als RSA und mit kürzeren Schlüsseln bei gleichem Sicherheitsniveau. Für Verschlüsselung wird automatisch ein cv25519-Unterschlüssel erzeugt. Die Passphrase sollte lang und komplex sein.
Direkt nach der Erstellung ein Widerrufszertifikat anlegen und sicher aufbewahren. Damit lässt sich der Schlüssel für ungültig erklären, falls er kompromittiert wird oder die Passphrase verloren geht:
gpg --output revoke.asc --gen-revoke deine@email.de
gpg.conf härten
Die Standardkonfiguration von GnuPG erlaubt aus Kompatibilitätsgründen veraltete Algorithmen wie 3DES, IDEA oder SHA-1. Das lässt sich in der ~/.gnupg/gpg.conf abstellen. Eine gehärtete Konfiguration, die nur noch starke Algorithmen zulässt:
# Ausgabe keyid-format 0xlong with-fingerprint utf8-strings # Key Discovery: WKD bevorzugen, keys.openpgp.org als Fallback auto-key-retrieve auto-key-locate wkd,dane,local,keyserver keyserver hkps://keys.openpgp.org # Starke Defaults cipher-algo AES256 digest-algo SHA512 cert-digest-algo SHA512 # KDF-Härtung für Passphrase-basierte Verschlüsselung s2k-mode 3 s2k-digest-algo SHA512 s2k-cipher-algo AES256 s2k-count 65011712 # Legacy-Algorithmen deaktivieren disable-cipher-algo 3DES disable-cipher-algo IDEA disable-cipher-algo CAST5 disable-cipher-algo BLOWFISH disable-cipher-algo TWOFISH # Privatsphäre no-comments no-emit-version export-options export-minimal # Trust Model: TOFU + Web of Trust trust-model tofu+pgp # Eigener Schlüssel default-key 0x5F279C362EEAB216 # Bevorzugte Algorithmen personal-cipher-preferences AES256 AES192 AES personal-digest-preferences SHA512 SHA384 SHA256 weak-digest SHA1 force-ocb
Die wichtigsten Punkte: auto-key-locate wkd,dane,local,keyserver sucht öffentliche Schlüssel zuerst per Web Key Directory und DANE im DNS, bevor ein Keyserver gefragt wird. Das ist schneller und vertrauenswürdiger. trust-model tofu+pgp kombiniert das klassische Web of Trust mit Trust on First Use, was in der Praxis besser funktioniert als reines WoT. Die s2k-count auf Maximum (65 Millionen Iterationen) macht Brute-Force-Angriffe auf die Passphrase deutlich teurer.
Schlüssel verteilen
Den öffentlichen Schlüssel exportieren und auf einen Keyserver hochladen:
# In eine Datei exportieren gpg --armor --export deine@email.de > pubkey.asc # Auf keys.openpgp.org hochladen gpg --keyserver keys.openpgp.org --send-key deine@email.de
keys.openpgp.org ist der empfohlene Keyserver. Die alten SKS-Keyserver (pgp.net, pgp.mit.edu) sind unbrauchbar geworden, weil sie keine Verifizierung der E-Mail-Adressen durchführen und mit Spam-Keys geflutet wurden. Nach dem Upload schickt keys.openpgp.org eine Bestätigungsmail. Erst nach der Bestätigung wird die E-Mail-Adresse am Schlüssel sichtbar.
Fremde Schlüssel importieren
# Vom Keyserver holen (Key-ID oder E-Mail) gpg --keyserver keys.openpgp.org --recv-keys 0xKEYID # Aus einer Datei importieren gpg --import pubkey.asc # Alle Schlüssel am Bund anzeigen gpg --list-keys
Mit der gehärteten Config und auto-key-retrieve holt GnuPG fehlende Schlüssel beim Verifizieren einer Signatur automatisch. Zuerst per WKD (Web Key Directory) direkt vom Mailserver des Absenders, dann per DANE aus dem DNS, und als letzten Fallback vom Keyserver.
E-Mail-Integration
Die meisten Mailclients unterstützen OpenPGP direkt oder über Plugins. Thunderbird hat GPG seit Version 78 eingebaut und braucht kein separates Plugin mehr. Apple Mail nutzt GPG Suite, unter Windows gibt es Gpg4win mit Outlook-Plugin. K-9 Mail auf Android unterstützt OpenPGP über die OpenKeychain-App.
Wer seinen öffentlichen Schlüssel zusätzlich per DNS veröffentlichen will, kann das mit einem SMIMEA-Record tun. Dann können Mailserver das Zertifikat automatisch aus dem DNS holen, ohne einen Keyserver abfragen zu müssen.
Mein Schlüssel
Ich signiere jede ausgehende E-Mail. Eine unsignierte Mail von mir sollte mit Vorsicht behandelt werden. Mein aktueller Schlüssel ist Ed25519 (seit 2023, der alte RSA-4096-Schlüssel von 2011 ist abgelaufen):
Algorithmus: Ed25519 (Sign) + cv25519 (Encrypt) Key-ID: 0x5F279C362EEAB216 Fingerprint: CCB4 FCD9 B858 AF4C C003 5B13 5F27 9C36 2EEA B216
gpg --keyserver keys.openpgp.org --recv-keys 0x5F279C362EEAB216
Siehe auch: S/MIME per DNS mit SMIMEA
Fragen? Einfach melden.
Schreibe einen Kommentar