GnuPG (gpg) — Verschlüsseln, Signieren und Schlüssel verwalten
Praxis-Guide zu GnuPG — Schlüssel erzeugen und verwalten, Dateien ver- und entschlüsseln, signieren und verifizieren sowie das Web of Trust nutzen.
GnuPG (kurz gpg) ist die freie OpenPGP-Implementierung und das Standardwerkzeug für Verschlüsselung und digitale Signaturen unter Linux, macOS und Windows. Mit einem einzigen Schlüsselpaar verschlüsselst du Dateien und E-Mails für bestimmte Empfänger, signierst Releases oder Git-Commits und prüfst die Echtheit fremder Daten über das Web of Trust. Dieser Guide führt dich von der Schlüsselerzeugung über Export, Import und Keyserver bis zum Ver- und Entschlüsseln im Alltag. Schütze deinen privaten Schlüssel dabei immer mit einer starken Passphrase — er ist der Generalschlüssel zu allem, was du verschlüsselst.
Schlüsselerzeugung
gpg --full-generate-key — Erzeugt ein neues Schlüsselpaar mit allen Optionen; wähle hier ein modernes Verfahren wie ECC (Ed25519) oder RSA mit mindestens 3072 Bit.
gpg --full-generate-keygpg --generate-key — Erzeugt ein Schlüsselpaar mit Standardwerten (schnell).
gpg --generate-keygpg --quick-generate-key '<uid>' — Schnelle Schlüsselerzeugung mit einer User-ID.
gpg --quick-generate-key 'John Doe <john@example.com>'Schlüsselverwaltung
gpg --list-keys — Listet alle öffentlichen Schlüssel im Keyring auf.
gpg --list-keysgpg --list-secret-keys — Listet alle privaten Schlüssel auf.
gpg --list-secret-keys --keyid-format longgpg --fingerprint <key-id> — Zeigt den Fingerprint eines Schlüssels an.
gpg --fingerprint john@example.comgpg --delete-key <key-id> — Löscht einen öffentlichen Schlüssel.
gpg --delete-key john@example.comgpg --delete-secret-key <key-id> — Löscht einen privaten Schlüssel — unwiderruflich, lege vorher unbedingt ein Backup an.
gpg --delete-secret-key john@example.comgpg --edit-key <key-id> — Bearbeitet Schlüssel-Eigenschaften (Trust, Ablaufdatum usw.).
gpg --edit-key john@example.comExport & Import
gpg --export -a <key-id> > <file> — Exportiert einen öffentlichen Schlüssel im ASCII-Armor-Format.
gpg --export -a john@example.com > john-public.ascgpg --export-secret-keys -a <key-id> > <file> — Exportiert einen privaten Schlüssel (zum Backup) — niemals weitergeben und nur sicher bzw. verschlüsselt verwahren.
gpg --export-secret-keys -a john@example.com > john-private.ascgpg --import <file> — Importiert einen Schlüssel aus einer Datei.
gpg --import colleague-public.ascgpg --keyserver <server> --send-keys <key-id> — Lädt einen öffentlichen Schlüssel auf einen Keyserver hoch.
gpg --keyserver keys.openpgp.org --send-keys ABCD1234gpg --keyserver <server> --recv-keys <key-id> — Lädt einen Schlüssel von einem Keyserver herunter.
gpg --keyserver keys.openpgp.org --recv-keys ABCD1234gpg --search-keys '<query>' — Sucht Schlüssel auf einem Keyserver.
gpg --keyserver keys.openpgp.org --search-keys 'john@example.com'Ver- und Entschlüsseln
gpg -e -r <recipient> <file> — Verschlüsselt eine Datei für einen Empfänger.
gpg -e -r john@example.com secret.txtgpg -e -r <recipient> -a <file> — Verschlüsselt mit ASCII-Armor-Ausgabe (textsicher).
gpg -e -r john@example.com -a secret.txtgpg -e -r <r1> -r <r2> <file> — Verschlüsselt für mehrere Empfänger.
gpg -e -r john@example.com -r jane@example.com secret.txtgpg -d <file> — Entschlüsselt eine Datei.
gpg -d secret.txt.gpg > secret.txtgpg -c <file> — Symmetrische Verschlüsselung (passwortbasiert, ohne Schlüssel).
gpg -c backup.tar.gzgpg -d <file>.gpg — Entschlüsselt eine symmetrisch verschlüsselte Datei.
gpg -d backup.tar.gz.gpg > backup.tar.gzSignieren & Verifizieren
gpg -s <file> — Erstellt eine signierte (binäre) Datei.
gpg -s document.pdfgpg --detach-sign <file> — Erstellt eine separate Signaturdatei (detached).
gpg --detach-sign release.tar.gzgpg --clearsign <file> — Erstellt eine Klartext-Signatur (lesbar + signiert).
gpg --clearsign message.txtgpg -se -r <recipient> <file> — Signiert und verschlüsselt eine Datei.
gpg -se -r john@example.com secret.txtgpg --verify <signature> <file> — Verifiziert eine separate (detached) Signatur.
gpg --verify release.tar.gz.sig release.tar.gzgpg --verify <file> — Verifiziert eine signierte Datei.
gpg --verify message.txt.ascHäufige Muster
echo '<text>' | gpg -e -r <recipient> -a — Verschlüsselt Text von stdin.
echo 'secret password' | gpg -e -r john@example.com -agpg --list-keys --keyid-format long — Listet Schlüssel mit langen Key-IDs auf (für Git-Signierung).
gpg --list-keys --keyid-format longtar czf - <dir> | gpg -c -o <file> — Erstellt ein verschlüsseltes Archiv.
tar czf - secrets/ | gpg -c -o secrets.tar.gz.gpggpg -d <file>.gpg | tar xzf - — Entschlüsselt und entpackt ein verschlüsseltes Archiv.
gpg -d secrets.tar.gz.gpg | tar xzf - Fazit
GnuPG ist seit Jahrzehnten das Rückgrat von OpenPGP und überall dort gesetzt, wo Vertraulichkeit und nachweisbare Echtheit zählen — von signierten Software-Releases bis zu verschlüsselten Backups. Der Einstieg über die Kommandozeile wirkt zunächst sperrig, doch die wenigen Kernbefehle für Erzeugen, Verschlüsseln und Signieren sitzen schnell. Sichere deinen privaten Schlüssel mit Backup und Widerrufszertifikat ab, dann begleitet dich dasselbe Schlüsselpaar über Jahre.
Weiterführende Links
- GnuPG — offizielle Dokumentation — Handbücher und Howtos (englisch)
- GNU Privacy Guard – Wikipedia