die raven homepage
Deutsche GnuPG Anleitung / Seite 4
Schlüsselpaare und Schlüsseltypen

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.

Notiz Siehe auch
Anhang 2: Algorithmen
Empfehlungen und Informationen zur Schlüsselgröße
Schlüsselerstellung

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:

Hautpsignierschlüssel [mit C, 0] - dient nur dem Zertifizieren von eigenen und fremden Schlüsseln und verfällt wie die gesammelten Zertifikate anderer Nutzer nie.
==> Unterschlüssel [mit S, 3y] - dient nur dem Signieren von Daten und verfällt nach 3 Jahren.
==> Unterschlüssel [mit A, 1y] - dient nur Authentifikationsprozessen und verfällt nach 1 Jahr.
==> Unterschlüssel [mit E, 3y] - dient nur der Verschlüsselung von Daten und verfällt nach 3 Jahren.

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.

Ablauf für Typ A (DSA / Elgamal)

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.

  1. (1) DSA und Elgamal (voreingestellt)
    Ihre Auswahl? 1
  2. DSA keys may be between 512 and 3072 bits long.
    What keysize do you want? (1024) 1024 - 3072
    Die verlangte Schlüssellänge beträgt n Bit
  3. ELG-E keys may be between 512 and 4096 bits long.
    What keysize do you want? (2048) 2048 - 4096
    Die verlangte Schlüssellänge beträgt n Bit
  4. Bitte wählen Sie, wie lange der Schlüssel gültig bleiben soll.
    0|<n>( |w|m|y) = Schlüssel verfällt nie|nach <n> Tagen|Wochen|Monaten|Jahren
    Wie lange bleibt der Schlüssel gültig? (0) 1y
    Key verfällt am Tag Monat Jahr Uhrzeit Zeitzone
    Ist dies richtig? (j/n) j
  5. Ihr Name ("Vorname Nachname"): Vorname Nachname
  6. E-Mail-Adresse: vorname.nachname@domain.tld
  7. Kommentar: Text oder Enter
  8. Ändern: (N)ame, (K)ommentar, (E)-Mail oder (F)ertig/(B)eenden? F
  9. Geben Sie die Passphrase ein: Passphrase
Ablauf für Typ B (RSA / RSA oder Elgamal)

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.

Erster Schritt - Hauptsignierschlüssel
  1. (5) RSA (nur signieren/beglaubigen)
    Ihre Auswahl 5
  2. Welche Schlüssellänge wünschen Sie? (1024) 2048 - 4096
    Sind Sie sicher, daß Sie diese Schlüssellänge wünschen? ja
  3. Bitte wählen Sie, wie lange der Schlüssel gültig bleiben soll.
    0|<n>( |w|m|y) = Schlüssel verfällt nie|nach <n> Tagen|Wochen|Monaten|Jahren
    Wie lange bleibt der Schlüssel gültig? (0) 0
    Key verfällt nie.
    Ist dies richtig? (j/n) j
  4. Ihr Name ("Vorname Nachname"): Vorname Nachname
  5. E-Mail-Adresse: vorname.nachname@domain.tld
  6. Kommentar: Text oder Enter
  7. Ändern: (N)ame, (K)ommentar, (E)-Mail oder (F)ertig/(B)eenden? F
  8. Geben Sie die Passphrase ein: Passphrase

    Anzeigeschema der Angaben des neuen Schlüssels:
    pub bit-ZahlR/Key-ID erstellt: Jahr-Monat-Tag verfällt: niemals Vertrauen: u/u
Zweiter Schritt - RSA oder Elgamal Unterschlüssel
  1. gpg --edit-key --expert Key-ID
  2. Befehl> addkey
  3. Geben Sie die Passphrase ein: Passphrase
  4. (4) Elgamal (encrypt only)
    Ihre Auswahl? 4
    für einen Elgamal Unterschlüssel oder

    (6) RSA (nur verschlüsseln)
    Ihre Auswahl? 6
    für einen RSA Unterschlüssel
  5. Welche Schlüssellänge wünschen Sie? (1024) 2048 -4096
  6. Wie lange bleibt der Schlüssel gültig? (0) 1y
    Key verfällt am Tag Monat Jahr Uhrzeit Zeitzone
    Ist dies richtig? (j/n) j
  7. Wirklich erzeugen? ja
  8. save

Natürlich kann man seinen Schlüssel auch mit einer der grafischen GnuPG Oberflächen erstellen. Hier als Beispiel das Auswahlfenster des WinPT:

WinPT Schlüsselerstellung

Über das Menü Schlüssel / Neu / Experte kann man viele Schlüsseltypen mit WinPT erstellen.

WinPT Angaben zur Schlüsselerstellung

Je nach Schlüsseltyp kann sich die Erstellung eines Schlüssels auch mit GnuPG Oberflächen in zwei Schritten vollziehen, d. h. zuerst wird ein Hauptschlüssel erstellt, der nur dem Signieren und / oder Zertifizieren dient, dem in einem zweiten Schritt Unterschlüssel angehängt werden. Bei WinPT wird zum Anhängen eines Unterschlüssels der Schlüssel markiert, Schlüssel bearbeiten im Kontextmenü ausgewählt und das ADDKEY Kommando ausgewählt.

Zu beachten ist, dass grafische GnuPG Oberflächen nicht unbedingt alle Möglichkeiten anbieten, die man über die Anwendung des gpg --gen-key --expert --enable-dsa2 Kommandos in der Konsole erhält.

Danach könnte der Schlüssel in der GnuPG Anzeige (gpg --list-sigs --fingerprint Key-ID) so aussehen:

GnuPG Anzeige eines Schlüssels

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.

Schlüssel bearbeiten statt ersetzen

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.

Schlüssel im Schlüsselring suchen und anzeigen

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.

  • Komplette Anzeige aller Schlüssel

    gpg --list-keys
  • Komplette Anzeige aller Schlüssel mit Fingerprint

    gpg --list-keys --fingerprint
  • Komplette Anzeige aller Schlüssel mit Zertifikaten und Fingerprint

    gpg --list-sigs --fingerprint
  • Anzeige von Schlüsseln über die Key-ID

    gpg --list-keys 5B0358A2
    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]
    
  • Anzeige von Schlüsseln mit Fingerprint über User-ID Bestandteil

    gpg --list-keys --fingerprint "Werner Koch"
    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]
    
  • Anzeige von Schlüsseln über User-ID Bestandteil

    gpg --list-keys wk@gnupg.org
    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]
    


    gpg --list-keys Werner Koch wk@gnupg.org
    gpg: error reading key: Öffentlicher Schlüssel nicht gefunden

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:

  • --list-options --show-photos

    Zusätzliche Anzeige von Foto-IDs mit dem konfigurierten Bildbetrachtungsprogramm.
  • --list-options --show-notation

    Zusätzliche Anzeige von Zertifikat Anmerkungen, die der Zertifizierende zu einem Schlüssel Zertifikat gemacht hat.
  • --list-options --show-policy-url

    Zusätzliche Anzeige der Adressen von Zertifikat Policys, in denen der Zertifizierende niedergelegt hat, nach welchen Regeln er Schlüssel zertifiziert.

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

[ Inhalt | Top | Zurück | Weiter ]