====== GPG (GnuPG) ====== GNU Privacy Guard (auch GnuPG oder GPG genannt) ist FOSS und implementiert den OpenPGP- und in Version 2 auch den S/MIME- und den PGP/MIME-Standard. Es wurde als Ersatz für das proprietäre Pretty Good Privacy (PGP) entwickelt. [[::einzelne Dateien mit GPG verschlüsseln]] ===== Konfiguration ===== * immer lange version der keyid anzeigen * loopback für pinentry benutzen (nur auf windows, wenn man kein popup fenster möchte; auf linux besser **pinentry-curses** benutzen) funktioniert immer (hässliches popup fenster auf windows) keyid-format long pinentry-mode ask windows (kein popup): keyid-format long pinentry-mode loopback * cache ttl für passphrase (separat für ssh) * loopback pinentry erlauben default-cache-ttl 3600 default-cache-ttl-ssh 3600 max-cache-ttl 28800 max-cache-ttl-ssh 28800 allow-loopback-pinentry **Unter Windows: ** Umgebungsvariable anlegen GNUPGHOME=%userprofile%\.gnupg evtl. Dateien vom alten ins neue dir verschieben (powershell commands) > mv $env:userprofile/AppData/Roaming/gnupg/* $env:userprofile/.gnupg/ > rm -r $env:userprofile/AppData/Roaming/gnupg/ ===== GPG Agent neustarten ===== gpg agent restart bzw. start/stop (z.B. bei dem error: **gpg: can't connect to the agent: Invalid value passed to IPC**) > gpg-connect-agent /bye > gpg-connect-agent killagent /bye das ''/bye'' verhindert, dass man in dem prompt von gpg-connect-agent bleibt ===== Anwendung ===== ==== GPG sign testen ==== > echo "test" | gpg --clearsign **Wichtig!** Wenn das Signieren mit GPG nicht geht, liegt es womöglich daran, dass GPG die TTY nicht findet und deshalb nicht nach der Passphrase fragen kann > echo 'export GPG_TTY=$(tty)' >> ~/.bashrc ==== GPG key paar generieren ==== GPG (CLI-Version) auf FreeBSD 14.0 installieren: > pkg install security/gpg-tui eine GPG-Schlüsselpaar (privaten + öffentlichen Schlüssel) erzeugen: > gpg --full-generate-key gpg (GnuPG) 2.4.3; Copyright (C) 2023 g10 Code GmbH This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. gpg: directory '/home/quarzsnoopy/.gnupg' created Please select what kind of key you want: (1) RSA and RSA (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) (9) ECC (sign and encrypt) *default* (10) ECC (sign only) (14) Existing key from card Your selection? Please select which elliptic curve you want: (1) Curve 25519 *default* (4) NIST P-384 (6) Brainpool P-256 Your selection? Please specify how long the key should be valid. 0 = key does not expire = key expires in n days w = key expires in n weeks m = key expires in n months y = key expires in n years Key is valid for? (0) Key does not expire at all Is this correct? (y/N) y * ''RSA and RSA'' und ''4096'' auswählen * Namen und E-Mail eintragen ==== GPG key editieren ==== > gpg --edit-key XXXXXXXXXXXXXXXX ==== GPG key auflisten ==== **Wichtig:** Wie oben gezeigt, das Format in der __gpg.conf__ setzen, oder ''%%--keyid-format long%%'' angeben, sonst erhält man nur die verkürzte Ausgabe! === public key === > gpg -k === private key === > gpg -K ==== GPG key exportieren ==== **Wichtig:** Man sollte beim normalen Export die Dateiendung ''.gpg'' wählen und beim Export mit ''-a'' / ''%%--armor%%'' (ASCII armored) die Dateiendung ''.asc'' wählen Wenn man keine Key für ''%%--export%%'' / ''%%--export-secret-keys%%'' spezifiziert, werden alle exportiert! === public key === > gpg -a -o gpg-public-keys.asc --export XXXXXXXXXXXXXXXX === private key === > gpg -a -o gpg-private-keys.asc --export-secret-keys XXXXXXXXXXXXXXXX ==== GPG ownertrust exportieren ==== empfohlen statt __trustdb.gpg__ zu sichern > gpg --export-ownertrust > gpg-ownertrust.txt ==== GPG key importieren ==== > gpg --import gpg-public-keys.asc > gpg --import gpg-private-keys.asc ==== GPG ownertrust importieren ==== > gpg --import-ownertrust gpg-ownertrust.txt ==== GPG key lokal exportieren und auf anderer maschine importieren ==== > gpg -a --export XXXXXXXXXXXXXXXX | ssh other-machine gpg --import ==== GPG key auf anderer maschine exportieren und lokal importieren ==== > ssh other-machine gpg -a --export XXXXXXXXXXXXXXXX | gpg --import ==== GPG key vertrauen ==== nach import erforderlich, wenn man ownertrust __nicht__ übernommen hat > gpg --edit-key XXXXXXXXXXXXXXXX gpg> trust gpg> save