Mit GnuPG werden überwiegend zwei bestimmte Typen von Schlüsselpaaren verwendet.
Jedes Schlüssel-Paar besteht aus dem privaten (geheimen) und öffentlichen Schlüssel (Private und Public Key), der von GnuPG in einer separaten Schlüsselringdatei für private Schlüssel (secring.gpg) und öffentliche Schlüssel (pubring.gpg) gespeichert wird.
Nur kurz zur Information an dieser Stelle: Mit dem eigenen, privaten Schlüssel wird entschlüsselt, signiert und zertifiziert. Mit fremden oder eigenen, öffentlichen Schlüsseln wird verschlüsselt und werden fremde Signaturen überprüft.
Jeder Schlüssel-Typ besteht aus einem Hauptsignierschlüssel (auch als Master-Signing-Key oder primärer Schlüssel bezeichnet), der so genannt wird, weil er nur der Erzeugung von Signaturen und Schlüsselzertifikaten dient und einem oder mehreren Schlüsseln, den Unterschlüsseln (auch als Sub-Keys oder Zweitschlüssel bezeichnet), die nur der Verschlüsselung dienen und dem Hauptsignierschlüssel zu- bzw. untergeordnet sind.
Typ A besteht üblicherweise aus einem DSA Hauptsignierschlüssel und mindestens einem Elgamal oder RSA Unterschlüssel.
Typ B besteht aus einem RSA Hauptsignierschlüssel und mindestens einem RSA oder Elgamal Unterschlüssel.
| Typ | Hauptsignierschlüssel | Unterschlüssel | Paar |
| A | DSA 1024- bis 3072-bit* |
Elgamal oder RSA 1024- bis 4096-bit |
Private Key Public Key |
| B | RSA 1024- bis 4096-bit |
RSA oder Elgamal 1024- bis 4096-bit |
Private Key Public Key |
* Ab GnuPG 1.4.4
Neben den beiden Hauptschlüsseltypen existieren noch verschiedene Varianten. Bei einer Variante bevorzugen GnuPG Anwender, dem Hauptsignierschlüssel neben einem Unterschlüssel zur Verschlüsselung einen weiteren Unterschlüssel zur Signierung / Zertifizierung anzuhängen.
| Siehe auch Anhang 2: Algorithmen Empfehlungen und Informationen zur Schlüsselgröße |
GnuPG Anwender, die zum ersten Mal mit GnuPG oder Kryptographie allgemein in Kontakt kommen, sollten sich zuerst einen Testschlüssel erstellen, mit dem die Informationen und Möglichkeiten dieser oder einer anderen Anleitung theoretisch und praktisch erprobt werden und den ersten Schlüssel nicht als "ihren Schlüssel" sofort an Schlüsselserver und Kommunikationspartner versenden.
Zur Erstellung des eigenen Schlüsselpaars wird eine Konsole (Eingabeaufforderung unter Windows) geöffnet und der Prozess zur Schlüsselerzeugung mit dem Kommando
gpg --gen-key
gestartet.
Bei der Verwendung grafischer GUIs und Schnittstellen kann es sein, dass nur die Erstellung von DSA/Elgamal Schlüsseln angeboten wird, weil dies der voreingestellte Schlüsseltyp ist.
Nach Eingabe des Kommandos zeigt GnuPG das folgende Auswahlmenü an:
(1) DSA und Elgamal (voreingestellt)
(2) DSA (nur signieren/beglaubigen)
(5) RSA (nur signieren/beglaubigen)
Startet man das Kommando mit gpg --gen-key --expert, wird ein erweitertes Auswahlmenü angeboten:
(1) DSA und Elgamal (voreingestellt)
(2) DSA (nur signieren/beglaubigen)
(3) DSA (setze eigene Funktionen)
(5) RSA (nur signieren/beglaubigen)
(7) RSA (setze eigene Funktionen)
Die Funktionen der Auswahlen (3) und (7), die auch beim Hinzufügen von Unterschlüsseln mit der expert Option angezeigt werden, beziehen sich auf die verschiedenen Anwendungen von Signierschlüsseln. Die können Daten signieren ("Sign", S), Schlüssel zertifizieren ("Certify", C) und zur Authentifikation ("Authenticate", A) gegenüber Anwendungen oder Diensten dienen.
Ohne expert Option werden Signierschlüssel immer als "SC" Schlüssel erstellt. Mit der expert Option kann man über Auswahl (3) und (7) Anwendungen bei der Schlüsselerstellung einzeln abschalten oder aktivieren/hinzufügen, wobei dem Hauptsignierschlüssel die Zertifizierungsanwendung (C) immer erhalten bleibt und nicht abgeschaltet werden kann.
Mit den beiden Auswahlen ist es möglich, die eigenen Schlüssel in Verbindung mit verschiedenen Gültigkeitszeiträumen granulös nach ihrer Anwendung einzustellen und zu unterschieden, was ggf. praktische und sicherheitsrelevante Vorteile bietet.
Zum Beispiel kann man folgenden Schlüssel erstellen:
GnuPG wählt später nach der Erstellung des Hauptschlüssels und der Unterschlüssel für die verschiedenen Anwendungen automatisch die richtigen Schlüssel aus. Die Gültigkeitszeiträume können später nachträglich verlängert werden.
DSA Hauptsignierschlüssel mit Elgamal Unterschlüssel.
Um mit GnuPG ab Version 1.4.4 einen DSA Schlüssel mit einer größeren Länge als 1024-bit erzeugen zu können, muss in der Kommandozeile gpg --gen-key --enable-dsa2 angegeben bzw. in die GnuPG Konfigurationsdatei gpg.conf die Option enable-dsa2 gesetzt werden.
Für die Abänderung der möglichen Anwendungen der Schlüssel (sofern gewünscht) muss zusätzlich die --expert Option gesetzt werden, also gpg --gen-key --expert --enable-dsa2.
RSA Hauptsignierschlüssel mit RSA oder Elgamal Unterschlüssel.
Für die Abänderung der möglichen Anwendungen der Schlüssel (sofern gewünscht) muss zusätzlich die --expert Option gesetzt werden, also gpg --gen-key --expert.
Natürlich kann man seinen Schlüssel auch mit einer der grafischen GnuPG Oberflächen erstellen. Hier als Beispiel das Auswahlfenster des WinPT:

Danach könnte der Schlüssel in der GnuPG Anzeige (gpg --list-sigs --fingerprint Key-ID) so aussehen:
In den ersten drei Zeilen sieht man den Hauptsignierschlüssel ("pub"). In der ersten Zeile gibt GnuPG die Länge des Schlüssels (4096) in Bits, den Schlüsseltyp (R = RSA), die 8-stellige Schlüssel-ID, das Erstellungsdatum und die Angaben der primären Benutzer-ID (Vor- und Nachname, E-Mail Adresse) aus.
In der zweiten Zeile ist die Ausgabe des Fingerprints des Hauptsignierschlüssels zu sehen, einer eindeutigen und schlüsselspezifischen Zeichenkette. Wie man sieht, beinhaltet die Schlüssel-ID die letzten 8 Zeichen des Fingerprints. In der dritten Zeile, mit "sig 3" eingeleitet, steht das Eigenzertifikat des Hauptsignierschlüssels.
In der vierten Zeile sieht man, dass dem Schlüssel eine sekundäre Benutzer-ID ("uid") hinzugefügt wurde, die ein Zertifikat des Hauptschlüssels trägt, das in der fünften Zeile angezeigt wird.
In den unteren drei Zeilen sieht man einen Unterschlüssel ("sub"). Wie beim Hautpsignierschlüssel folgen in der ersten Zeile die Angaben des Unterschlüssels, der ebenfalls ein RSA Schlüssel ist mit dem Unterschied, dass er nach drei Jahren verfällt, d. h. von Schlüsselbenutzern nicht mehr verwendet werden kann. Danach folgt der Fingerprint des Unterschlüssels und in der letzten Zeile das Zertifikat des Hauptsignierschlüssels.
Die Bedeutung weiterer Kürzel bei der Auflistung von Schlüsseln wird in Anzeige erklärt.
Viele GnuPG Anwender erzeugen jedesmal komplett neue Schlüsselpaare, wenn sie andere Verschlüsselungsalgorithmen verwenden möchten, wenn sie neue E-Mail Adressen nutzen oder die Gültigkeitsdauer bei Schlüsseln abläuft. Damit verlieren sie nicht nur die bereits erhaltenen Zertifikate von anderen GnuPG Nutzern und Zertifizierungsstellen, sondern es sammeln sich mit der Zeit immer mehr Schlüssel auf den Schlüsselservern an, die zum Teil auch nicht zurückgerufen werden.
Dabei ist für die angeführten Zwecke ein komplett neues Schlüsselpar gar nicht nötig, weil man für existierende Schlüssel die Algorithmuspräferenzen ändern, alte Unterschlüssel widerrufen und neue Unterschlüssel anhängen kann. Ändern sich die Angaben zu E-Mail Adressen, kann man User-IDs widerrufen und neue User-IDs hinzufügen. Läuft die Gültigkeitsdauer von Schlüsseln ab und man möchte Schlüssel weiter nutzen, kann die Gültigkeitsdauer von Hauptsignier- und Unterschlüsseln verlängert werden.
Zur Anzeige oder Suche eines bestimmten Schlüssel kann man die Merkmale, die einen Schlüssel identifizieren, heranziehen, sprich die Key-ID oder die User-ID. Das eindeutigste Merkmal eines Schlüssl ist seine Key-ID. Oft sind aber nur die User-ID oder Bestandteile der User-ID bekannt, also Vor- und Nachname oder der Name der Organisation, E-Mail Adressen.
Mit den folgenden Kommandos kann man sich Schlüssel anzeigen lassen. Als Beispiel wird der Schlüssel
pub 1024D/5B0358A2 1999-03-15 [expires: 2009-07-11]
uid Werner Koch <wk@gnupg.org>
verwendet.
pub 1024D/5B0358A2 1999-03-15 [expires: 2009-07-11] uid Werner Koch <wk@gnupg.org> uid Werner Koch uid Werner Koch <wk@g10code.com> sub 2048R/B604F148 2004-03-21 [expires: 2005-12-31] sub 1024D/010A57ED 2004-03-21 [expires: 2007-12-31]
pub 1024D/5B0358A2 1999-03-15 [expires: 2009-07-11] Key fingerprint = ZEICHENKETTE5B0358A2 uid Werner Koch <wk@gnupg.org> uid Werner Koch uid Werner Koch <wk@g10code.com> sub 2048R/B604F148 2004-03-21 [expires: 2005-12-31] sub 1024D/010A57ED 2004-03-21 [expires: 2007-12-31] pub 1024D/57548DCD 1998-07-07 [expires: 2004-12-31] Key fingerprint = ZEICHENKETTE57548DCD uid Werner Koch (gnupg sig) <dd9jn@gnu.org> pub 1024D/621CC013 1998-07-07 [expires: 2004-12-31] Key fingerprint = ZEICHENKETTE621CC013 uid Werner Koch <wk@gnupg.org> uid [revoked] Werner Koch <wk@openit.de> uid Werner Koch <wk@g10code.com> uid Werner Koch <werner.koch@guug.de> sub 1536R/23D2A63D 2002-07-30 [expired: 2003-12-31] sub 1536R/70E37CCD 2003-12-24 [expires: 2004-12-31] sub 1536G/B5A18FF4 1998-07-07 [revoked: 1999-11-12] sub 1536g/ADF6A6E1 1999-02-20 [expired: 2002-11-01]
pub 1024D/5B0358A2 1999-03-15 [expires: 2009-07-11] uid Werner Koch <wk@gnupg.org> uid Werner Koch uid Werner Koch <wk@g10code.com> sub 2048R/B604F148 2004-03-21 [expires: 2005-12-31] sub 1024D/010A57ED 2004-03-21 [expires: 2007-12-31] pub 1024D/621CC013 1998-07-07 [expires: 2004-12-31] uid Werner Koch <wk@gnupg.org> uid [revoked] Werner Koch <wk@openit.de> uid Werner Koch <wk@g10code.com> uid Werner Koch <werner.koch@guug.de> sub 1536R/23D2A63D 2002-07-30 [expired: 2003-12-31] sub 1536R/70E37CCD 2003-12-24 [expires: 2004-12-31] sub 1536G/B5A18FF4 1998-07-07 [revoked: 1999-11-12] sub 1536g/ADF6A6E1 1999-02-20 [expired: 2002-11-01]
Man sieht also, dass man je nach Kombination der Optionen und der Wahl des Suchmusters unterschiedliche Ergebnisse erzielt und das es wichtig ist, die richtige Schreibweise der User-ID Bestandteile zu treffen und User-IDs mit Leerzeichen mit " " zu umschließen. Die letzte Suchanfrage wäre erfolgreich, wenn statt des angegebenen Suchmusters "Werner Koch <wk@gnupg.org>" benutzt worden wäre.
Der Umfang der Ausgabe kann noch um weitere Informationen erweitert werden, wenn man zusätzlich folgende Optionen verwendet:
Tipp: Man kann die Anzeigeoptionen auch dauerhaft in der GnuPG Konfigurationsdatei gpg.conf hinterlegen. Das Präfix no- schaltet die Anzeige ab.
with-fingerprint
list-options [no-]show-photos
list-options [no-]show-notation
list-options [no-]show-policy-url