/media/sda-magnetic/david/Dok-15-2023-11-27/informatik/betriebssysteme/apt-und-gpg/apt.txt


 /etc/apt/sources.list
 /etc/apt/sources.list.d/

deb http://de.archive.ubuntu.com/ubuntu jammy main restricted

    "Typ": deb oder deb-src
    "Ort": z.B. http://de.archive.ubuntu.com/ubuntu (oder auch eine CD/DVD)
    "Distribution": jammy, jammy-updates, jammy-security, usw.
    "Komponenten" (optionale Liste): main, restricted, universe, multiverse

deb
deb-src

Ort:
    cdrom
    http
    ftp
    file
    copy

lsb_release -cir


cp /etc/apt/sources.list /etc/apt/sources.list.bak

cat -n /etc/apt/sources.list

apt-get update

Multiarch

 Eigene Paketquelle anlegen

PPA: Personal Package Archive

    dpkg-dev (main)

apt-get install dpkg-dev

Advanced Package Tool

apt [OPTIONEN] BEFEHL

update
upgrade
full-upgrade
install PAKETNAME
install /PFAD/ZUM/PAKET
reinstall PAKETNAME
remove PAKETNAME
 purge PAKETNAME
autoremove

search SUCHBEGRIFF
show PAKETNAME
list SUCHMUSTER

sudo apt edit-sources

sudo apt install foo_1.0_all.deb      # falsch
sudo apt install ./foo_1.0_all.deb

[sudo] apt-get [OPTIONEN] KOMMANDO [PAKET1] [PAKET2]

update
upgrade
install PAKET(E)
remove PAKET(E)
autoremove [PAKET(E)]
purge PAKET(E)
source PAKET(E)
build-dep PAKET(E)
dist-upgrade
dselect-upgrade
clean
autoclean
check    	Überprüfung auf Abhängigkeitsfehler
markauto PAKET(E) 	PAKET(E) als "automatisch installiert" markieren
unmarkauto PAKET(E) 	PAKET(E) als "manuell installiert" markieren
changelog PAKET(E)
download PAKET(E) 	PAKET(E) herunterladen

Optionen

--fix-broken
--fix-missing, --ignore-missing
 --install-suggests
 ...



    Die nächste Veröffentlichung von Debian heißt "trixie" – "Testing", bisher noch kein Veröffentlichungsdatum
    Debian 12 ("Bookworm") – aktuelle Veröffentlichung - "Stable"
    Debian 11 ("Bullseye") – aktuelle Veröffentlichung - "Oldstable"
    Debian 10 ("Buster") – aktuelle Veröffentlichung - "Oldoldstable"
    unter LTS-Support
    Debian 9 ("Stretch") – veraltete Veröffentlichung, unter erweitertem LTS-Support
    Debian 8 ("Jessie") – veraltete Veröffentlichung, unter erweitertem LTS-Support
    Debian 7 ("Wheezy") – veraltete Veröffentlichung
    Debian 6.0 ("Squeeze") – veraltete Veröffentlichung
    Debian GNU/Linux 5.0 ("Lenny") – veraltete Veröffentlichung
    Debian GNU/Linux 4.0 ("Etch") – veraltete Veröffentlichung
    Debian GNU/Linux 3.1 ("Sarge") – veraltete Veröffentlichung
    Debian GNU/Linux 3.0 ("Woody") – veraltete Veröffentlichung
    Debian GNU/Linux 2.2 ("Potato") – veraltete Veröffentlichung
    Debian GNU/Linux 2.1 ("Slink") – veraltete Veröffentlichung
    Debian GNU/Linux 2.0 ("Hamm") – veraltete Veröffentlichung

Stable
Testing
Unstable

Architectures:


    64-bit PC (amd64)
    64-bit ARM (AArch64)
    EABI ARM (armel)
    Hard Float ABI ARM (armhf)
    32-bit PC (i386)
    MIPS (little endian)
    64-bit MIPS (little endian)
    POWER Processors
    IBM System z

dpkg

-i 	--install
	--configure
-r 	--remove
-l 	--list
-P 	--purge
-R 	--recursive
-L 	--listfiles
-S 	--search

dpkg-query

-l 	--list
-S 	--search
-L 	--listfiles

Paketstatus

    u für unbekannt

    i für installieren

    h für halten

    r für entfernen (Konfigurationsdateien behalten)

    p für vollständig (inkl. Konfigurationsdateien) entfernen

dpkg-deb¶

 dpkg-deb stellt grundlegende Möglichkeiten zum Packen und Entpacken, sowie die Abfrage von Metainformationen

-I 	--info
-b 	--build
-c 	--contents
-x 	--extract

dpkg-repack¶

#deb cdrom:[Debian GNU/Linux 12.2.0 _Bookworm_ - Official amd64 NETINST with firmware 20231007-10:28]/ bookworm main non-free-firmware

deb http://deb.debian.org/debian/ bookworm main non-free-firmware
deb-src http://deb.debian.org/debian/ bookworm main non-free-firmware

deb http://security.debian.org/debian-security bookworm-security main non-free-firmware
deb-src http://security.debian.org/debian-security bookworm-security main non-free-firmware


http://deb.debian.org/
http://deb.debian.org/debian/
deb-src http://security.debian.org
deb-src http://security.debian.org/debian-security

bookworm
bookworm-backports
bookworm-security

main
non-free-firmware
contrib
non-free

Backport: Rückportierung


Schlüsselverwaltung

Pakete in Paketquellen werden mit einem Schlüssel kryptografisch signiert

apt/apt-key

/etc/apt/trusted.gpg
/etc/apt/trusted.gpg.d/

Schlüssel hinzufügen¶

sudo wget -nc -O /etc/apt/keyrings/example-archive-keyring.gpg https://example.org/public.key

ASCII-verpackte Schlüssel (base64-kodiert)

gpg
um sie zu dekodieren (dearmor genannt

OpenPGP-Binärdatei,

/etc/apt/keyrings/schluessel.gpg

curl https://example.org/public-key.asc | sudo -H gpg --dearmor -o /etc/apt/keyrings/example-archive-keyring.gpg

Anhand der Schlüssel-ID kann ebenfalls ein Schlüssel hinzugefügt werden
sudo -H gpg -k && sudo -H gpg --no-default-keyring --keyring /usr/share/keyrings/schlüssel.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys <Schlüssel-ID>

sources.list anpassen¶

deb [signed-by=/etc/apt/keyrings/schluessel.gpg] http://example.org/linux/deb/ stable main

/etc/apt/sources.list bzw. /etc/apt/sources.list.d/datei.list

signed-by

GNU Privacy Guard (GnuPG)

Schlüsselpaar

asymmetrischen Verschlüsselung

Viele Verschlüsselungsformen nutzen sowohl für die Verschlüsselung als auch für die Entschlüsselung den gleichen Schlüssel. Man spricht hier daher vom symmetrischen Verfahren.

Man gibt also den Absperrschlüssel an seine Kommunikationspartner  weiter

privaten Schlüssel.
 öffentlichen Schlüssel.

Hybride Verfahren¶

Genau ausgedrückt, verwendet GnuPG ein hybrides Verfahren zur Verschlüsselung. Da asymmetrische Verschlüsselung extrem rechenintensiv ist, wird die eigentliche Nachricht tatsächlich symmetrisch verschlüsselt. Hierfür wird intern ein "Einweg-Schlüssel" erzeugt.

Mit diesem Schlüssel wird zunächst die Nachricht verschlüsselt, was nun wesentlich schneller geht. Es wird nur der relativ kurze, symmetrische Schlüssel mit dem asymmetrischen Schlüssel (öffentlicher Schlüssel) gesichert. Der jetzt gesicherte symmetrische Schlüssel wird sodann zusammen mit der gesicherten Nachricht versandt. Der Empfänger nutzt seinen privaten Schlüssel, um Zugang zum geheimen, symmetrischen Schlüssel zu erlangen, und kann damit schließlich die Nachricht wiederherstellen

Von sicheren und geheimen Kanälen

als Man-in-the-middle-Angriff b

Nachdem A den öffentlichen Schlüssel von B - wie auch immer - bekommen hat, muss sich A die Authentizität des Schlüssels bestätigen lassen

Jeder Schlüssel hat eine Art Fingerabdruck, eine unverwechselbare Kennung.

sicherer Kanal

Passwortsätze

gnupg

Der Schlüsselbund

 ~/.gnupg/.

 GnuPG speichert alle Schlüssel, die man mit der Zeit sammelt, in einem "Schlüsselbund" im Verzeichnis ~/.gnupg/.

Schlüssel auflisten

gpg --list-secret-keys
gpg -K

gpg --list-keys
gpg -k

Key-ID

sec  1024D/ABCD1234 2005-06-18 Max Mustermann <max.m _at_ example.com>

Fingerprint

Ein Fingerprint (dt.: Fingerabdruck) ist ein relativ kurzer Hash-Wert, mit dem man Schlüssel verifizieren kann
. Dieser identifiziert einen Schlüssel, so wie der menschliche Fingerabdruck einen Menschen (praktisch) eindeutig identifizier

gpg --fingerprint <ID oder Name des Schlüssels>

Schlüsselpaar erzeugen

gpg --full-gen-key

Bitte wählen Sie, welche Art von Schlüssel Sie möchten:
   (1) RSA und RSA (voreingestellt)
   (2) DSA und Elgamal
   (3) DSA (nur unterschreiben/beglaubigen)
   (4) RSA (nur signieren/beglaubigen)
Ihre Auswahl?

ECC Schlüssel¶

gpg --expert --full-gen-key

Schlüssel importieren¶

Erhält man den öffentlichen Schlüssel eines Kommunikationspartners oder will man ein Schlüsselpaar (also einen privaten und einen öffentlichen Schlüssel) importieren, so muss man ihn zur weiteren Verwendung zunächst in den Schlüsselbund importieren.

gpg --with-fingerprint /tmp/dateiname.asc

gpg --import /tmp/dateiname.asc

Schlüssel exportieren¶



    Artikel Bearbeiten Verlauf Diskussion Abonnieren

GnuPG

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

    Ubuntu 22.04 Jammy Jellyfish

Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

    ⚓︎
    Ein Terminal öffnen

    ⚓︎
    Installation von Paketen

    ⚓︎
    Freischalten von Paketquellen

    ⚓︎
    Erklärung der Techniken die hinter GnuPG stehen

Inhaltsverzeichnis

    Installation
    Grafische Programme zur Schlüsselverwaltun...
    GnuPG in anderen Programmen nutzen
    Der Schlüsselbund
        Fremden Schlüsselbund verwenden
        Schlüssel auflisten
        "Fingerprint" anzeigen
        Schlüsselpaar erzeugen
        Schlüssel importieren
        Schlüssel exportieren
        Schlüssel löschen
        Schlüssel suchen
        Vertrauensstufe importieren oder exporti...
        Zusätzliche E-Mail-Adressen
        Konfiguration der bevorzugten Algorithme...
    Dateioperationen
        Verschlüsseln
        Entschlüsseln
        Signieren
        Signatur verifizieren
        Thunar Skripte
    E-Mail-Verschlüsselung testen
    Texte per Zwischenablage Ver-/Entschlüssel...
    Links
        Intern
        Extern

./gnupg-logo.png Dieser Artikel behandelt die Signatur und Verschlüsselung mit Hilfe des freien Kryptografie-Systems GNU Privacy Guard (GnuPG) 🇬🇧. Alle unter Linux gängigen Mailprogramme wie Evolution, Kmail oder Thunderbird können GnuPG zur Verschlüsselung von E-Mails nach dem OpenPGP-Standard nutzen. Ab Version 2.x unterstützt GnuPG auch den S/MIME-Standard.

Um E-Mails mit GnuPG signieren oder verschlüsseln zu können, benötigt man ein eigenes Schlüsselpaar. Das Schlüsselpaar besteht aus einem öffentlichen und einem privaten Schlüssel.

Während der öffentliche Schlüssel weitergegeben wird, um den Kommunikationspartnern zu ermöglichen, Daten verschlüsselt an sie zu versenden oder ihre Signatur zu überprüfen, muss der private Schlüssel vom Besitzer geheim gehalten werden, damit nur dieser die Daten entschlüsseln bzw. signieren kann.

Die grundlegenden Prinzipien der verwendeten Technik zu verstehen, trägt zur sicheren Anwendung des Verfahrens bei. Diesem Thema widmet sich der Hintergrundartikel GnuPG/Technischer Hintergrund. Wer noch nicht mit der Funktionsweise asymmetrischer Verschlüsselungssysteme vertraut ist, sollte sich diesen Artikel auf jeden Fall zu Gemüte führen, bevor er hier weiterliest [4]. Weitere Grundlagenartikel sind unten unter Links zu finden.

Dieser Artikel beschäftigt sich mit der asymmetrischen Verschlüsselung mit GnuPG, wer sich für die symmetrische Verschlüsselung mit GnuPG interessiert, muss hier weiterlesen GnuPG/Symmetrische Verschlüsselung.

⚓︎
Installation

Das Paket gnupg ist bei allen derzeitigen Ubuntu-Versionen vorinstalliert. Seit Ubuntu 17.10 handelt es sich dabei um GnuPG Version 2.
Grafische Programme zur Schlüsselverwaltung

    Unter Gnome/Unity dient das Programm Seahorse (bzw."Passwörter und Verschlüsselung") zur grafischen Schlüssel- und Passwortverwaltung.

    Unter KDE steht dafür das Programm KGpg zur Verfügung.

    GPA ist nicht für eine bestimmte Desktop-Umgebung ausgelegt und eignet sich deswegen auch besonders für den Einsatz auf "leichten" Systemen.

GnuPG in anderen Programmen nutzen

Eigentlich können unter Linux alle gängigen E-Mail-Programme GnuPG zur Verschlüsselung und Signierung von E-Mails nutzen. Auch einige andere Programme, bspw. Instant Messenger, sind GnuPG-fähig. Wie man das im Einzelfall nutzen kann, steht in den jeweiligen Artikeln bzw. der Dokumentation der jeweiligen Programme. Hier eine Tabelle mit direkten Links zur GnuPG-Funktionalität:
Programm 	Kategorie
Evolution (Abschnitt „GnuPG“) 	E-Mail
KMail 	E-Mail
Sylpheed (Abschnitt „E-Mails-verschluesseln-mit-GnuPG“) 	E-Mail
Claws Mail 	E-Mail
Gajim (Abschnitt „c2c-Verschluesselung“) 	Jabber/Instant Messenger
Psi (Abschnitt „Verschluesselung“) 	Jabber/Instant Messenger
Kopete (Abschnitt „Module“) 	Jabber/Instant Messenger
MCabber (Abschnitt „Verschluesselung“) 	Jabber/Instant Messenger

Dabei ist es sinnvoll oder teilweise auch nötig, den GPG-Agent zur Passwortverwaltung zu benutzen.

⚓︎
Der Schlüsselbund

GnuPG speichert alle Schlüssel, die man mit der Zeit sammelt, in einem "Schlüsselbund" im Verzeichnis ~/.gnupg/. Vormalig befanden sich dort zwei Schlüsselbunde, pubring.gpg für die öffentlichen Schlüssel und secring.gpg für die Privaten. Dies wurde jedoch mit Version 2.1 entfernt.

Die privaten Schlüssel befinden sich nun in dem Verzeichnis private-keys-v1.d/, während die Datei pubring.kbx die öffentlichen Schlüssel enthält.

Für die Ordnerstruktur von .gnupg/ sowie die Konfigurationsdateien siehe auch den Artikel zur GPG-Konfiguration.

Alle GnuPG-Operationen werden mit dem Kommandozeilenwerkzeug gpg durchgeführt [1].

⚓︎

Wer seinen GnuPG-Schlüsselbund nicht über die Kommandozeile verwalten möchte, findet in den Ubuntu-Repositories eine Reihe grafischer Schlüsselbundmanager (Frontends), die aber nicht im Fokus dieses Artikels stehen. Unter KDE gibt es beispielsweise das Werkzeug KGpg, dem ein eigener Artikel gewidmet ist.

Nutzer von GNOME möchten dagegen vielleicht lieber Seahorse verwenden, ein Programm, das auch mit dem Dateimanager (Nautilus) und dem Texteditor von GNOME (gedit) zusammenarbeitet - ausführlich beschrieben im Artikel Seahorse.

Unter Ubuntu-Mate (evt. auch anderen GNOME Varianten) ist Seahorse unter "Passwörter und Verschlüsselung" unter Zubehör im "Brisk Menü Starter" zu finden.

Vom GnuPG-Projekt selbst stammt der "GNU Privacy Assistant" (GPA), der auf dem GIMP-Toolkit basiert, aber desktop-unabhängig ist. Mehr Informationen dazu liefert der Artikel GPA.

Möchte man seine Schlüssel anstatt in ~/.gnupg/ lieber woanders aufheben, nutzt man bei der Verwendung von gpg die Option --homedir /mein/pfad/zum/gnupg oder setzt global oder pro Anwender die Umgebungsvariable GNUPGHOME=/mein/pfad/zum/gnupg.
Fremden Schlüsselbund verwenden

Man kann mit gpg – entsprechende Dateirechte vorausgesetzt – auch einen fremden Schlüsselbund bearbeiten; dann muss man den eigenen Schlüsselbund mit der Option --no-default-keyring abwählen und den gewünschten mit der Option --keyring auswählen. Gelegentlich benötigt man dies z.B. für den von APT verwendeten Schlüsselbund. Dieser Befehl listet z.B. die Schlüssel von Paketquellen, denen man vertraut:

gpg --no-default-keyring --keyring /etc/apt/trusted.gpg --list-keys

Die Option --keyring kann mehrfach angegeben werden, wenn man mehrere Schlüsselbünde gleichzeitig benutzen möchte. Die Datei des Schlüsselbunds muss immer mit ihrem Pfad angegeben werden, anderenfalls wird sie im Vorgabeordner ~/.gnupg/ gesucht.

Ohne Angabe dieser Optionen wird stets der eigene persönliche Schlüsselbund verwendet.

⚓︎
Schlüssel auflisten

Bei den nachfolgenden gpg-Befehlen auf der Kommandozeile (Terminal) ist die Reihenfolge der gpg-Optionen bei den gezeigten Beispielen genau einzuhalten, da das Programm hier andernfalls unerwartet arbeitet. Mit folgenden Befehlen kann man seine GPG-Schlüssel auflisten lassen. Die Optionen können dabei jeweils in der langen, beschreibenden Version oder in der kurzen, einbuchstabigen Variante benutzt werden. Entweder die eigenen, geheimen Schlüssel:

gpg --list-secret-keys
gpg -K

oder die öffentlichen Schlüssel:

gpg --list-keys
gpg -k

Diese Befehle zeigen Informationen über die Schlüssel an. Wichtig ist hierbei u.a. die Key-ID (hinter der "Schlüsselstärke" zu finden). Es ist ein achtstelliger Hex-Code.

sec  1024D/ABCD1234 2005-06-18 Max Mustermann <max.m _at_ example.com>

In diesem Beispiel ist die Key-ID ABCD1234. Wenn man bisher weder eigene Schlüssel angelegt noch fremde importiert hat, ist die Ausgabe natürlich leer.

Neuere Versionen von GPG geben statt der kurzen 8-stelligen Key-ID nur den 40-stelligen Fingerprint der Schlüssel aus. Will man dennoch die kurze Key-ID haben, so verwendet man diesen Befehl:

gpg --list-keys --keyid-format SHORT

⚓︎
"Fingerprint" anzeigen

Ein Fingerprint (dt.: Fingerabdruck) ist ein relativ kurzer Hash-Wert, mit dem man Schlüssel verifizieren kann. Dieser identifiziert einen Schlüssel, so wie der menschliche Fingerabdruck einen Menschen (praktisch) eindeutig identifiziert. Nach heutigem Kenntnisstand ist es so gut wie aussichtslos zu versuchen, einen zweiten Schlüssel mit demselben Fingerprint zu erschaffen. Man kann (und sollte) das dafür nutzen, sich von der Echtheit solcher Schlüssel zu überzeugen, die man von einem Schlüssel-Server oder per E-Mail erhalten hat. Dieser Fingerabdruck besteht aus einer Zeile Hexadezimalzahlen, die man bspw. auf Visitenkarten drucken oder am Telefon übermitteln kann.

Anzeigen lässt sich der Fingerabdruck eines Schlüssels mit:

gpg --fingerprint <ID oder Name des Schlüssels>

So sieht er etwa aus: 23C7 B473 4C46 5AFB B0D3 E60F 631E 9BDA E8D8 4F17

Die Ausgabe dieses Kommandos sieht genauso aus wie die von --list-keys, mit einer zusätzlichen Zeile. Man kann die ID auch weglassen, dann werden alle Schlüssel des Schlüsselbunds mit Fingerabdruck aufgeführt.

Mit dem folgenden Befehl kann der Fingerabdruck einer Schlüsseldatei angezeigt werden, ohne sie in den Schlüsselbund zu importieren:

gpg --with-fingerprint /tmp/dateiname.asc

⚓︎
Schlüsselpaar erzeugen

Ein neues Schlüsselpaar aus privatem und zugehörigem öffentlichen Schlüssel kann ganz einfach im Terminal [1] erzeugt werden:

gpg --full-gen-key

Bitte wählen Sie, welche Art von Schlüssel Sie möchten:
   (1) RSA und RSA (voreingestellt)
   (2) DSA und Elgamal
   (3) DSA (nur unterschreiben/beglaubigen)
   (4) RSA (nur signieren/beglaubigen)
Ihre Auswahl?

Sind pro Option mehr als ein Algorithmus angegeben, so bezieht sich der erste auf das Signieren und der zweite auf das Verschlüsseln. Bei der Wahl der Art des Schlüssels (bzw. der Schlüssel) sollte allerdings nur mit entsprechendem Hintergrundwissen von der Standardauswahl abgewichen werden.
Experten-Info:

Es ist z.B. möglich einen RSA-Signierschlüssel mit einem ElGamal-Verschlüsselungsschlüssel zu wählen. Dazu müsste man 4 auswählen und später dem RSA-Schlüsselpaar ein ElGamal-Unterschlüsselpaar hinzufügen (Stichwort: addkey).

Anschließend wird die Schlüsselstärke erfragt. Je nach Art des Schlüssels sind unterschiedliche Werte möglich. Der mögliche Mini- bzw. Maximalwert wird vom Programm ausgegeben. Je höher dieser Wert, desto sicherer - aber auch umso langsamer - "arbeitet" der Schlüssel. Der vorgeschlagene Wert von 3072 ist für die meisten Anwendungsfälle in Ordnung und kann übernommen werden.
Hinweis:

Um auf Nummer sicher zu gehen, empfehlen verschiedene Kryptographen heutzutage eine Schlüssellänge von 3072 Bits oder mehr.

RSA-Schlüssel können zwischen 1024 und 4096 Bits lang sein.
Welche Schlüssellänge wünschen Sie? (3072)

Anschließend muss man auswählen, wie lange der Schlüssel gültig sein soll. Hier sollte man der Versuchung widerstehen, eine unbeschränkte Gültigkeit festzulegen, da dieser Schlüssel dann auch bei Verlust ewig gültig ist und niemals von den Schlüssel-Servern ("keyserver") verschwindet. Irgend etwas zwischen 1 und 5 Jahren ist dagegen ein praktischer Wert. Für ein Gültigkeitsdauer von einem Jahr gibt man als Wert "1y" ein und bestätigt mit ⏎ .

Bitte wählen Sie, wie lange der Schlüssel gültig bleiben soll.
         0 = Schlüssel verfällt nie
      <n>  = Schlüssel verfällt nach n Tagen
      <n>w = Schlüssel verfällt nach n Wochen
      <n>m = Schlüssel verfällt nach n Monaten
      <n>y = Schlüssel verfällt nach n Jahren
Wie lange bleibt der Schlüssel gültig? (0)

Hinweis:

Das Ablaufdatum kann auch noch nachträglich geändert werden. Um diese Änderungen seinen Gesprächspartnern mitzuteilen, muss man ihnen seinen öffentlichen Schlüssel erneut schicken bzw. ihn erneut zum Schlüsselserver hochladen.

Nun müssen der Name und die E-Mail-Adresse angegeben werden, für die das Schlüsselpaar gelten soll:

Sie benötigen eine Benutzer-ID, um Ihren Schlüssel eindeutig zu machen; das
Programm baut diese Benutzer-ID aus Ihrem echten Namen, einem Kommentar und
der E-Mail-Adresse in dieser Form auf:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
Ihr Name ("Vorname Nachname"): Vorname Nachname
E-Mail-Adresse: user@example.com
Kommentar: optional
Sie haben diese User-ID gewählt:
    "Vorname Nachname (optional) <user@example.com>"
Ändern: (N)ame, (K)ommentar, (E)-Mail oder (F)ertig/(B)eenden?

Schließlich wird nochmal gefragt, ob die Angaben in Ordnung sind (mit der Taste F bestätigen,), und eine Passphrase für den privaten Schlüssel wird benötigt, um diesen zu schützen. Diese Passphrase benötigt man später, um Mails zu signieren und zu entschlüsseln. Dieser Passwort-Satz sollte nicht leicht zu erraten sein; Tipps findet man z.B. im Sicherheits 1x1 (Abschnitt „Passwoerter“). Nun wird der Schlüssel erstellt, wobei eine große Menge echter (nicht Pseudo-)Zufallswerte benötigt werden. Es kann deswegen sein, dass man vom System gebeten wird, ein wenig mit Maus und Tastatur zu spielen, um solche Werte besser erzeugen zu können.
Hinweis:

Oftmals hat ein System - vor allem bei großen Schlüssellängen - Probleme, ausreichend viele Zufallswerte zu generieren. Hierbei kann das Programm haveged unterstützend wirken. Dieses kann ganz einfach via sudo apt-get install haveged installiert werden, danach „sammelt“ der Dienst im Hintergrund zufällige Ereignisse.

Mehr Infos zur Funktionsweise u. a. hier:

    haveged - A simple entropy daemon 🇬🇧

    Aus dem Alltag eines Sysadmin: Haveged 🇩🇪

Nun liegt der Schlüssel in ~/.gnupg/private-keys-v1.d/ unter der zugehörigen ID, und man kann ihn wie oben beschrieben auflisten lassen. Mit dem öffentlichen Schlüssel verschlüsselte Nachrichten oder auch Dateien können nur mittels des dazugehörigen privaten Schlüssel wieder entschlüsselt werden. Genauere Details finden sich im Artikel GnuPG/Technischer Hintergrund.
Achtung!

Wenn man plant, den Schlüssel an mehr als ein paar Leute weiterzugeben (bzw. ihn auf einen Keyserver hochzuladen), denen man bei Verlust oder Kompromittierung des privaten Schlüssels persönlich Bescheid sagen kann, sollte man sich am besten direkt nach der Erstellung des Schlüssels ein sogenanntes Widerrufszertifikat erstellen, mit dem man später den Schlüssel - auch ohne dass dieser vorhanden sein muss - für ungültig erklären kann. (mehr)
ECC Schlüssel

gpg kann auch ECC-Schlüssel erzeugen:

gpg --expert --full-gen-key

Sinnvoll sind dabei diese Parameter:

Please select what kind of key you want:
   ...
   (9) ECC and ECC
   ...

Please select which elliptic curve you want:
   (1) Curve 25519
   ...

Allerdings sind ECC-Keys nicht mit älteren Versionen von GnuPG kompatibel. Bei der Nutzung von ECC-Schlüsseln sollte man dementsprechend wissen, was man tut.

⚓︎
Schlüssel importieren

Erhält man den öffentlichen Schlüssel eines Kommunikationspartners oder will man ein Schlüsselpaar (also einen privaten und einen öffentlichen Schlüssel) importieren, so muss man ihn zur weiteren Verwendung zunächst in den Schlüsselbund importieren.

Man sollte aber auf keinen Fall Schlüssel ungeprüft verwenden! Entweder man nimmt persönlichen Kontakt zum Kommunikationspartner auf und gleicht den "fingerprint" ab, oder man nutzt das GnuPG/Web of Trust.

gpg --with-fingerprint /tmp/dateiname.asc

gpg --import /tmp/dateiname.asc

⚓︎
Schlüssel exportieren

Ebenso kann man einen Schlüssel exportieren. Das ist z.B. notwendig, wenn man seinen öffentlichen Schlüssel auf seiner Webseite zum freien Herunterladen anbieten will,

gpg -a --output gpg-key --export <Schlüssel-ID oder Name>
gpg -a --export <Schlüssel-ID oder Name> | tee gpg-key

Verschlüsseln

gpg --encrypt -a --recipient <Name oder Key_Id> test.txt

Entschlüsseln

gpg --decrypt --output entschluesselt.txt test.txt.asc

Signieren

gpg --detach-sig -a test.txt

Nachdem man seine Passphrase erfolgreich eingegeben hat, erhält man eine Datei test.txt.asc. Diese enthält eine digitale Signatur der Originaldatei mit der sich die Authentizität beweisen lässt. Hier ein Beispiel:

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
iD8DBQFDTqEJxHY64NcyylkRAvZ2AJoDxlQ4VuqpIDfcTFnHEye4PGfNIACdEcRw
QVoj5npyj4VyaEzLzx4vdSs=
=ySv1
-----END PGP SIGNATURE---

gpg --verify test.txt.asc

gpg: Signature made Mon 19 Jun 2006 17:06:05 CEST using DSA key ID <Key_Id>
gpg: Good signature from "Person, von der die Signatur stammt"

adele@gnupp.de