GPG (GNU Privacy Guard, Befehl gpg) ist die freie Implementierung des OpenPGP-Standards. Damit erzeugt man Schlüsselpaare, ver- und entschlüsselt Dateien und E-Mails und signiert Software — etwa die Paketlisten von Debian- und Ubuntu-Repositorien oder Git-Commits.
Schlüssel erzeugen und verwalten
gpg --quick-gen-key "Max Mustermann <Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein. >"
gpg --list-keys
gpg --list-secret-keys
gpg --edit-key Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.
Der schnelle Weg nutzt seit GnuPG 2.1 die modernen Elliptic-Curve-Algorithmen Ed25519 (Signieren) und Curve25519 (Verschlüsseln). Das alte RSA-Primärschlüssel-Menü erreicht man mit gpg --full-gen-key. Seit GnuPG 2.2 läuft die Passphrasen-Abfrage über den gpg-agent, der Schlüssel nach einer Weile wegcacht.
Exportieren und importieren
gpg --armor --export Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.
gpg --export-secret-keys --armor Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.
gpg --import schluessel.asc
gpg --keyserver keys.openpgp.org --send-keys FUZZY0LANGEFINGERPRINT
--armor erzeugt den ASCII-Text (Block beginnt mit -----BEGIN PGP PUBLIC KEY BLOCK-----), der sich gut per E-Mail verschicken lässt. Öffentliche Schlüssel dürfen überall hin; der private Schlüssel gehört ausschließlich auf den eigenen Rechner, am besten mit Passphrase geschützt.
Verschlüsseln, entschlüsseln, signieren
gpg --encrypt --recipient Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein. datei.txt
gpg --decrypt datei.txt.gpg
gpg --sign datei.txt
gpg --verify datei.txt.gpg
GPG kombiniert dabei asymmetrische und symmetrische Verschlüsselung (hybrides Verfahren): Ein zufälliger Sitzungsschlüssel verschlüsselt die Daten, der öffentliche Schlüssel des Empfängers verschlüsselt den Sitzungsschlüssel. Wer den eigenen Schlüssel nicht verlieren will, erzeugt sofort nach der Schlüsselerstellung ein Widerrufszertifikat: gpg --gen-revoke und verwahrt es offline.
Fingerabdruck prüfen
gpg --fingerprint Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.
Der Fingerabdruck ist der belastbare Identitätsnachweis eines Schlüssels — vor der ersten Nutzung vergleicht man ihn über einen zweiten Kanal (Webseite, Telefon), dann signiert man den fremden Schlüssel (gpg --sign-key) und baut so das Web of Trust auf. Während GPG mit dezentralen OpenPGP-Schlüsselbunden arbeitet, verwaltet das Java-Ökosystem Zertifikate zentral in Keystores — dort ist das passende Werkzeug keytool.
Verwandte Grundlagen: OpenSSL-Befehle, GPG (Konzept), OpenPGP, Ende-zu-Ende-Verschlüsselung.