GnuPG Anleitung - Seite 6

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.

Bei der Schlüsselerstellung und später bei einer eventuellen Änderung der Passphrase sollte man eine sichere Passphrase wählen. Hinweise zur Zusammensetzung einer sicheren Passphrase gibt der Passwort Beitrag der Wikipedia.

Grundlegende Optionen

Vor der eigentlichen Schlüsselerstellung sollte man die GnuPG Konfigurationsdatei gpg.conf editieren und ein paar grundlegende Optionen setzen.

Wurde der GPA bereits einmal aufgerufen und konfiguriert, beinhaltet die gpg.conf Datei folgenden Text:

###+++--- GPGConf ---+++###
utf8-strings
keyserver hkp://keys.gnupg.net
auto-key-locate local,keyserver
###+++--- GPGConf ---+++### 02/06/12 17:00:40 Mitteleuropäische Zeit
# GPGConf edited this configuration file.
# It will disable options before this marked block, but it will
# never change anything below these lines.

Oben stehen die Optionen, die bereits mit den ersten Einstellungen im GPA vom GPA gesetzt wurden und die man zukünftig über die GPA Einstellungen setzt. Alle weiteren Optionen, die über die GPA Oberfläche hinausgehen und manuell vorgenommen werden, stehen unterhalb der letzten Zeilen. Will man den GPA überhaupt nicht verwenden, kann man die obigen Optionen auch in den unteren Bereich kopieren und den GPGConf Block entfernen.

Algorithmen und Kompressionsverfahren

Wer bereits vor der Erstellung des ersten Schlüssels seine bevorzugten Algorithmen festlegen will, kann dies über die Angabe von Algorithmen für bestimmte Zwecke und in mehreren Listen machen. Die Änderung der eigenen Krypto-Präferenzen ist aber auch zu einem späteren Zeitpunkt möglich.

Option Wert*
keyid-format 0xlong
expert
cert-digest-algo SHA256
s2k-cipher-algo TWOFISH
s2k-digest-algo SHA256
personal-cipher-preferences S10 S9 S8 S7 S2 S4 S3 oder
TWOFISH AES256 AES192 AES 3DES BLOWFISH CAST5
personal-digest-preferences H8 H3 H2 oder
SHA256 RIPEMD160 SHA1
personal-compress-preferences Z3 Z2 Z1 oder
BZIP2 ZLIB ZIP
default-preference-list S10 S9 S8 S7 S2 S4 S3 H8 H3 H2 Z3 Z2 Z1 oder
TWOFISH AES256 AES192 AES 3DES BLOWFISH CAST5 SHA256…

* Die hier angegeben Algorithmen und Kompressionsverfahren sind als Beispiele zu verstehen. Welche Algorithmen und Kompressionsverfahren die jeweilige GnuPG Version unterstützt, wird nach Eingabe von gpg --version angezeigt. Auf der Seite Kryptografische Verfahren bei GnuPG werden Eigenschaften und Zwecke der Algorithmen vorgestellt.

Die keyid-format Option bewirkt die Anzeige der Schlüssel-ID im Format 0x16-Zeichen statt 0x8-Zeichen, was die sichere bzw. eindeutige Anzeige und Auswahl von Schlüsseln erhöht, da die Möglichkeit bestehen könnte, dass zwei unterschiedliche Schlüssel die gleichen acht letzten Zeichen in der Schlüssel-ID aufweisen. Die expert Option schaltet alle möglichen Aktionen und Optionen frei, was für die Erstellung aller möglichen Schlüsseltypen notwendig ist.

Die cert-digest-algo Option bestimmt den Hash-Algorithmus, den GnuPG für Zertifikate bei der Zertifizierung von Schlüsseln verwendet. Die s2k-cipher-algo Option bestimmt den Algorithmus, mit dem der geheime Schlüssel verschlüsselt und die s2k-digest-algo Option den Hash-Algorithmus, mit dem die Passphrase gehasht wird.

Die personal-*-preferences Listen setzen die Reihenfolgen der zu bevorzugenden Algorithmen für symmetrische Schlüssel und die symmetrische Verschlüsselung (-cipher-), die Prüfsummen (-digest-) und die Datenkompression (-compress-). Die default-preferences Liste ist eine Zusammenfassung der persönlichen Präferenzen.

Die Listen bestimmen damit, welche Angaben zu Krypto-Präferenzen im Eigenzertifikat gespeichert werden und welche Algorithmen bei der Daten- und Kommunikationsverschlüsselung zum Einsatz kommen.

Im folgenden Beispiel wird ein DSA Hauptschlüssel erstellt, der nur dem Zertifizieren eigener und fremder Schlüssel dienen soll. Dem Hauptschlüssel wird danach ein DSA Unterschlüssel zum Signieren von Daten und ein zweiter Elgamal Unterschlüssel zum Verschlüsseln angehängt. Der Hauptschlüssel soll niemals, der Signierschlüssel nach 30 Jahren und der Verschlüsselungsschlüssel nach 3 Jahren verfallen.

mit dem GPA

Über Schlüssel → Neuer Schlüssel wird das folgende Formularfenster aufgerufen und ausgefüllt:

Nach Bestätigung über den OK Button wird zweimalig zur Eingabe der Passphrase aufgefordert:


Schaut man sich die Eigenschaften des Schlüssels an, sieht man, dass der Schlüssel zum Zertifizieren (C = Certificate) und Signieren (S = Sign) ausgelegt wurde. Mit dem GPA kann also kein Hauptschlüssel erstellt werden, der nur zertifiziert.

Da man mit dem GPA auch keine weiteren Unterschlüssel für einen bereits bestehenden Hauptschlüssel erstellen kann, ist an dieser Stelle Schluß. Mit dem GPA kann man nur die Standard Schlüsseltypen DSA Hauptschlüssel (SC) mit einem Elgamal Unterschlüssel (E = Encrypt) oder RSA Hauptschlüssel (SC) mit RSA Unterschlüssel (E) erstellen und dabei die Schlüssellängen festlegen.

Deshalb wird empfohlen für die Schlüsselerstellung immer den Weg über die Konsole zu gehen und sich an diesen Weg zu gewöhnen.

in der Konsole

In den folgenden Kommandos wird gpg angegeben, Windows Benutzer müssen stattdessen gpg.exe in der Eingabeaufforderung eingeben.

DSA Hauptschlüssel (Zertifizieren)

gpg --gen-key

Danach zeigt GnuPG folgende Auswahl an, aus der Nr (7) gewählt wird:

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

Im nächsten Schritt wird dem DSA Hauptschlüssel die Signieren Eigenschaft entzogen:

Mögliche Vorgänge eines DSA-Schlüssels: Signieren Zertif. Authentisierung 
Derzeit erlaubte Vorgänge: Signieren Zertif. 
 
   (U) Umschalten der Signaturfähigkeit
   (A) Umschalten der Authentisierungsfähigkeit
   (Q) Beenden
 
Ihre Auswahl? u

Danach wird der Auswahldialog mit (Q) bendet:

Mögliche Vorgänge eines DSA-Schlüssels: Signieren Zertif. Authentisierung 
Derzeit erlaubte Vorgänge: Zertif. 
 
   (U) Umschalten der Signaturfähigkeit
   (A) Umschalten der Authentisierungsfähigkeit
   (Q) Beenden
 
Ihre Auswahl? q

Dann folgt die Abfrage nach der Bitlänge des DSA Schlüssels und der Dauer seiner Gültigkeit:

DSA-Schlüssel können zwischen 512 und 3072 Bit lang sein.
Welche Schlüssellänge wünschen Sie? (2048) 3072
Die verlangte Schlüssellänge beträgt 3072 Bit
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) 0
Schlüssel verfällt nie
Ist dies richtig? (j/N) j

Statt allgemeiner Zeitraumangaben mit n Zeitraum kann auch ein bestimmtes Datum nach dem Muster YYYY-MM-DD angegeben werden.

Anschließend wird die Benutzer-ID des Schlüssels definiert:

GnuPG erstellt eine User-ID um Ihren Schlüssel identifizierbar zu machen.
 
Ihr Name ("Vorname Nachname"): test test
Email-Adresse: test@test.de
Kommentar: 
Sie haben diese User-ID gewählt:
    "test test <test@test.de>"
 
Ändern: (N)ame, (K)ommentar, (E)-Mail oder (F)ertig/(A)bbrechen? f

Zu einem späteren Zeitpunkt können bestehende Benutzer-IDs zurückgezogen oder entfernt und weitere Benutzer-IDs hinzugefügt werden.

Es folgt die bekannte Eingabeaufforderung zur zweimaligen Eingabe der Passphrase. In der Konsole werden abschließend die Daten zum neuen Schlüssel und ein Hinweis zum weiteren Vorgehen angezeigt:

pub   3072D/0x92CFDAD95A2EEAA6 2012-02-09
      Schl.-Fingerabdruck = 0469 14AB 60F2 D0D8 C1F9  C89D 92CF DAD9 5A2E EAA6
uid                 [ uneing.] test test <test@test.de>
 
Bitte beachten Sie, daß dieser Schlüssel nicht zum Verschlüsseln benutzt
werden kann.  Sie können aber mit dem Befehl "--edit-key" einen
Unterschlüssel für diesem Zweck erzeugen.

Hier sieht man auch die Ausgabe des Fingerabdrucks des Schlüssels und die Ausgabe der Schlüssel-ID im 0xlong Format, das als Option in der gpg.conf Datei festgelegt wurde. Da es vorkommen kann, dass die acht letzten Zeichen der Schlüssel-ID der Schlüssel von zwei verschiedenen Schlüsselinhabern übereinstimmen können, wird die Eindeutigkeit der Schlüssel-ID bei Verwendung von sechszehn Zeichen erhöht.

Wie zu erkennen ist, bildet die Schlüssel-ID einen Teil des Fingerabdrucks ab. Schlüssel-ID und Fingerabdruck dienen der eindeutigen Identifizierung bzw. Adressierung eines Schlüssels und der Überprüfung der Schlüsselzugehörigkeit zum Schlüsselinhaber.

Ein Blick auf den Schlüssel mit dem GPA zeigt, dass ein DSA Hauptschlüssel erstellt wurde, der nur die Zertifizieren (C) Eigenschaft aufweist:

DSA Unterschlüssel (Signieren)

Die bereits in der Konsole angezeigte Schlüssel-ID wird zum Editieren des Schlüssels verwendet, um im nächsten Schritt mit dem addkey Befehl den DSA Unterschlüssel zum Signieren zu erstellen:

gpg --edit-key 0x92CFDAD95A2EEAA6
 
Geheimer Schlüssel ist vorhanden.
 
gpg: verwende Vertrauensmodell PGP
pub  3072D/0x92CFDAD95A2EEAA6 erzeugt: 2012-02-09 verfällt: niemals  Aufruf: C   
                              Vertrauen: uneingeschränkt Gültigkeit: uneingeschränkt
[ uneing.] (1). test test <test@test.de>
 
gpg> addkey

Nach Eingabe der Passphrase erscheint wieder die bekannte Auswahlliste, aus der wieder Nr. (7) ausgewählt wird. Da die Eigenschaft des Unterschlüssels bereits auf Signieren eingeschränkt ist, wird die Auswahl sofort mit q beendet.

Bitte wählen Sie, welche Art von Schlüssel Sie möchten:
   (3) DSA (nur signieren/beglaubigen)
   (4) RSA (nur signieren/beglaubigen)
   (5) Elgamal (nur verschlüsseln)
   (6) RSA (nur verschlüsseln)
   (7) DSA (Leistungsfähigkeit selber einstellbar)
   (8) RSA (Leistungsfähigkeit selber einstellbar)
Ihre Auswahl? 7
 
Mögliche Vorgänge eines DSA-Schlüssels: Signieren Authentisierung 
Derzeit erlaubte Vorgänge: Signieren 
 
   (U) Umschalten der Signaturfähigkeit
   (A) Umschalten der Authentisierungsfähigkeit
   (Q) Beenden
 
Ihre Auswahl?  q

Anschließend wird für den Unterschlüssel die Schlüssellänge und ein Gültigkeitszeitraum von 30 Jahren bestimmt:

DSA-Schlüssel können zwischen 512 und 3072 Bit lang sein.
Welche Schlüssellänge wünschen Sie? (2048) 3072
Die verlangte Schlüssellänge beträgt 3072 Bit
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) 30y
Key verfällt am ????-??-??
Ihr Rechner kann Daten jenseits des Jahres 2038 nicht anzeigen.
Trotzdem werden Daten bis 2106 korrekt verarbeitet.
Ist dies richtig? (j/N) j
Wirklich erzeugen? (j/N) j

Statt allgemeiner Zeitraumangaben mit n Zeitraum kann auch ein bestimmtes Datum nach dem Muster YYYY-MM-DD angegeben werden. Das Verfallsdatum bzw. der Gültigkeitszeitraum kann zu einem späteren Zeitpunkt geändert werden. Ist ein Unterschlüssel engültig verfallen, ist er von anderen GnuPG Benutzern nicht mehr zum Verschlüsseln zu verwenden. Danach kann man einfach einen neuen Unterschlüssel erstellen. Unterschlüssel und der Hauptschlüssel können zurückgezogen, also für ungültig erklärt oder gelöscht werden.

Es folgt die Anzeige der Schlüsseleigenschaften, die mit dem Befehl save beendet wird:

pub  3072D/0x92CFDAD95A2EEAA6 erzeugt: 2012-02-09  verfällt: niemals Aufruf: C   
                              Vertrauen: uneingeschränkt Gültigkeit: uneingeschränkt
sub  3072D/0x62D8B9096A9EA661  erzeugt: 2012-02-09  verfällt: ????-??-?? Aufruf: S   
[ uneing.] (1). test test <test@test.de>
 
gpg> save

Einem Hauptschlüssel wird also immer das pub Kürzel vorangestellt, einem Unterschlüssel das sub Kürzel. Danach folgt die Angabe der Bit- bzw. Schlüssellänge, ein Buchstabe für den Public-Key Algorithmus (D = DSA, g = Elgamal, R = RSA) und die Schlüssel-ID.

Elgamal Unterschlüssel (Verschlüsseln)

Zum Erstellen des Elgamal Unterschlüssels zum Verschlüssel wird der Schlüssel erneut editiert. Nur wird dieses Mal in der Auswahlliste Nr. (5) ausgewählt:

gpg --edit-key 0x92CFDAD95A2EEAA6
 
gpg> addkey
 
Bitte wählen Sie, welche Art von Schlüssel Sie möchten:
   (3) DSA (nur signieren/beglaubigen)
   (4) RSA (nur signieren/beglaubigen)
   (5) Elgamal (nur verschlüsseln)
   (6) RSA (nur verschlüsseln)
   (7) DSA (Leistungsfähigkeit selber einstellbar)
   (8) RSA (Leistungsfähigkeit selber einstellbar)
Ihre Auswahl? 5

Es folgt die Angabe der gewünschten Schlüssellänge und ein Gültigkeitszeitraum von 3 Jahren:

ELG-Schlüssel können zwischen 512 und 4096 Bit lang sein.
Welche Schlüssellänge wünschen Sie? (2048) 4096
Die verlangte Schlüssellänge beträgt 4096 Bit
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) 3y
Key verfällt am So 08 Feb 2015 19:11:34 CET
Ist dies richtig? (j/N) j
Wirklich erzeugen? (j/N) j

GnuPG zeigt wieder die Schlüsseleigenschaften an und der Prozess kann mit dem save Befehl beendet werden.

pub  3072D/0x92CFDAD95A2EEAA6 erzeugt: 2012-02-09 verfällt: niemals Aufruf: C   
                              Vertrauen: uneingeschränkt Gültigkeit: uneingeschränkt
sub  3072D/0x62D8B9096A9EA661 erzeugt: 2012-02-09 verfällt: ????-??-?? Aufruf: S   
sub  4096g/0xB728BB7FFBC19289 erzeugt: 2012-02-09 verfällt: 2015-02-08 Aufruf: E   
[ uneing.] (1). test test <test@test.de>
gpg> save

Eine andere Anzeige erhält man später z. B. mit gpg --list-sigs --fingerprint

gpg --list-sigs --fingerprint 0x92CFDAD95A2EEAA6
 
pub 3072D/0x92CFDAD95A2EEAA6 2012-02-09
    Schl.-Fingerabdruck = 0469 14AB 60F2 D0D8 C1F9  C89D 92CF DAD9 5A2E EAA6
uid   [ uneing.] test test <test@test.de>
sig 3 0x92CFDAD95A2EEAA6 2012-02-09 niemals test test <test@test.de>
sub   3072D/0x62D8B9096A9EA661 2012-02-09 [verfällt: ????-??-??]
      Schl.-Fingerabdruck = 81EE A35B A5FE 364D 25C9  A602 62D8 B909 6A9E A661
sig   0x92CFDAD95A2EEAA6 2012-02-09 niemals test test <test@test.de>
sub   4096g/0xB728BB7FFBC19289 2012-02-09 [verfällt: 2015-02-08]
      Schl.-Fingerabdruck = A28B 1D85 A706 55E9 7ED4  1C2B B728 BB7F FBC1 9289
sig   0x92CFDAD95A2EEAA6 2012-02-09 niemals test test <test@test.de>

Hier sieht man, dass die beiden Unterschlüssel vom Hauptschlüssel zertifiziert (sig) wurden, sowie die Schlüssel-IDs und Fingerabdrücke aller Schlüssel. Später kommen u. U. weitere Benutzer-IDs (uid) und die Zertifikate anderer Schlüsselinhaber hinzu.

Der soeben erstellte Schlüssel im GPA:

Auch im GPA erhält man alle Informationen zu Schlüsseln, nur nicht so kompakt wie in der Konsole.

Ist der Schlüssel erstellt, kann man den öffentlichen Schlüssel in eine Datei exportieren und z. B. per E-Mail versenden oder direkt auf einen Schlüsselserver laden.

Verweise auf aktuelle Seite