Translation(s): English - Deutsch

(!) Discussion

Status: Entwurf /!\

Einleitung

Grundlagen

Schlüsselpaar erzeugen

Es wird sicher nicht so oft vorkommen, aber die Erzeugung eines eigenen Schlüsselpaars ist der erste Schritt für die Verwendung von GnuPG.

% gpg --full-gen-key
gpg (GnuPG) 2.2.10; Copyright (C) 2018 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

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)
Ihre Auswahl? 1

Zunächst wählt man den Schlüssel-Typ. In unserem Fall lassen wir die Voreinstellung RSA und RSA.

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

Im zweiten Schritt wählt man die Länge des Schlüssels. Die Voreinstellung ist 3072, welche wir in unserem Beispiel auf 4096 Bit ändern.

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 Di 09 Nov 2021 20:13:14 CET
Ist dies richtig? (j/N) j

In unserem Beispiel hat der Schlüssel eine Gültigkeit von 3 Jahren. Die Gütigkeit lässt sich jederzeit verlängern. Sollte man seinen Schlüssel mal verlieren (Defekt einer Festplatte) und hat kein Widerrufszertifikat, so kann man den Schlüssel nicht Widerrufen. Hat man jedoch eine beschränkte Gültigkeit gesetzt, so wird dieser zu dem Zeitpunkt automatisch ungültig.

GnuPG erstellt eine User-ID, um Ihren Schlüssel identifizierbar zu machen.

Ihr Name ("Vorname Nachname"): MeinVorname MeinNachname
Email-Adresse: mailbox@domain.tld
Kommentar: Test
Sie haben diese User-ID gewählt:
    "MeinVorname MeinNachname (Test) <mailbox@domain.tld>"

Ändern: (N)ame, (K)ommentar, (E)-Mail oder (F)ertig/(A)bbrechen? F

Die User-ID gibt die Informationen zu einem Benutzer eines Schlüssels aus. Es können später noch weitere User-IDs angelegt werden. Eine User-ID kann man als Haupt-User-ID definieren.

Wir müssen eine ganze Menge Zufallswerte erzeugen.  Sie können dies
unterstützen, indem Sie z.B. in einem anderen Fenster/Konsole irgendetwas
tippen, die Maus verwenden oder irgendwelche anderen Programme benutzen.
Wir müssen eine ganze Menge Zufallswerte erzeugen.  Sie können dies
unterstützen, indem Sie z.B. in einem anderen Fenster/Konsole irgendetwas
tippen, die Maus verwenden oder irgendwelche anderen Programme benutzen.
gpg: Schlüssel EDABDADE1B2E6414 ist als ultimativ vertrauenswürdig gekennzeichnet
gpg: Widerrufzertifikat wurde als '/home/user/.gnupg/openpgp-revocs.d/5D0D6BD47D2BBB9F4C3E6229EDABDADE1B2E6414.rev' gespeichert.
Öffentlichen und geheimen Schlüssel erzeugt und signiert.

pub   rsa4096 2018-11-10 [SC] [verfällt: 2021-11-09]
      5D0D6BD47D2BBB9F4C3E6229EDABDADE1B2E6414
uid                      MeinVorname MeinNachname (Test) <mailbox@domain.tld>
sub   rsa4096 2018-11-10 [E] [verfällt: 2021-11-09]

In unserem Beispiel wurden zwei Schlüssel erzeugt.

Öffentlicher Schlüssel exportieren, teilen und importieren

Damit eine Person die Signatur einer anderen Person prüfen kann oder eine verschlüsselte E-Mail an diese Person verschicken kann, benötigt man den öffentlichen Schlüssel des Kommunikationspartners.

Ein öffentlicher Schlüssel lässt sich wie folgt erstellen:

        gpg --export -a 5D0D6BD47D2BBB9F4C3E6229EDABDADE1B2E6414

In der Regel wird man die Ausgabe in eine Datei umleiten:

        gpg --export -a 5D0D6BD47D2BBB9F4C3E6229EDABDADE1B2E6414 > 5D0D6BD47D2BBB9F4C3E6229EDABDADE1B2E6414.asc

Der Kommunikationspartner kann dann den Schlüssel importieren:

        gpg --import < 5D0D6BD47D2BBB9F4C3E6229EDABDADE1B2E6414.asc

Eine alternative ist die Verwendung eines Schlüssel-Servers.

/!\ Die Verwendung von einem Schlüssel-Server hat Nachteile. Sowohl Name, E-Mail-Adresse sowie die "Kontakte" durch die Signatur von Schlüsseln werden auf Server verteilt. Alternativen werden später aufgeführt.

Der folgende Befehl wird einen Schlüssel exportieren und auf den Server hochladen:

        gpg --send-keys 5D0D6BD47D2BBB9F4C3E6229EDABDADE1B2E6414

Der folgende Befehl wird einen Schlüssel vom Server runterladen und importieren:

        gpg --receive-keys 5D0D6BD47D2BBB9F4C3E6229EDABDADE1B2E6414

Schlüssel hinzufügen

gpg --expert --edit-key 5D0D6BD47D2BBB9F4C3E6229EDABDADE1B2E6414
gpg (GnuPG) 2.2.10; Copyright (C) 2018 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Geheimer Schlüssel ist vorhanden.

sec  rsa4096/EDABDADE1B2E6414
     erzeugt: 2018-11-10  verfällt: 2021-11-09  Nutzung: SC  
     Vertrauen: ultimativ     Gültigkeit: ultimativ
ssb  rsa4096/7DF68C6646643E83
     erzeugt: 2018-11-10  verfällt: 2021-11-09  Nutzung: E   
[ ultimativ ] (1). MeinVorname MeinNachname (Test) <mailbox@domain.tld>

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 (Nutzung selber einstellbar)
   (8) RSA (Nutzung selber einstellbar)
  (10) ECC (nur signieren)
  (11) ECC (Nutzung selber einstellbar)
  (12) ECC (nur verschlüsseln)
   (13) Vorhandener Schlüssel
Ihre Auswahl? 8

Mögliche Vorgänge eines RSA-Schlüssels: Signieren Verschl. Authentisierung 
Derzeit erlaubte Vorgänge: Signieren Verschl. 

   (S) Umschalten der Signaturnutzbarkeit
   (V) Umschalten der Verschlüsselungsnutzbarkeit
   (A) Umschalten der Authentisierungsnutzbarkeit
   (Q) Beenden

Schlüsselinformationen

Ein Schlüssel wird über seine Schlüssel-ID identifiziert. Es gibt 4 Arten wie man die Schlüssel-ID angeben bzw. ausgeben lassen kann:

gpg --keyid-format short --fingerprint -k  5D0D6BD47D2BBB9F4C3E6229EDABDADE1B2E6414
pub   rsa4096/1B2E6414 2018-11-10 [SC] [verfällt: 2021-11-09]
  Schl.-Fingerabdruck = 5D0D 6BD4 7D2B BB9F 4C3E  6229 EDAB DADE 1B2E 6414
uid      [ ultimativ ] MeinVorname MeinNachname (Test) <mailbox@domain.tld>
sub   rsa4096/46643E83 2018-11-10 [E] [verfällt: 2021-11-09]

rsa3072 und rsa2048 stehen für die Schlüsselart und die Schlüssellänge, welche pro Schlüssel angegeben werden. Die Schlüssel-ID wird nach der Schlüssellänge angezeigt.

Schlüsselverwaltung

Web of Trust

Zeige Signaturen zu einem Schlüssel

Eine wichtiger Information zu einem Schlüssel ist sich anzeigen zu lassen welche Personen einen Schlüssel unterzeichnet haben und in wie weit die Person einen Schlüssel geprüft hat.

gpg --list-sig 123456789012345678901234567890ABCDEF1234
pub   rsa4096 2012-09-20 [SC]
      123456789012345678901234567890ABCDEF1234
uid        [vollständig] Vorname Nachname <mailbox@domain.tld>
sig 2        1234567890123467 2018-10-22  Vorname Nachname (Keysigning) <keysigning@domain.tld>
sig 3   P    ABCD1234ABCDABCD 2018-10-23  Vorname Nachname (Hello) <hello@domain.tld>
sig 3        567890ABCDEF1234 2018-10-11  Vorname Nachname <domain@domain.tld>
sub   rsa4096 2012-09-20 [E]
sig          567890ABCDEF1234 2013-09-23 Vorname Nachname <mailbox@domain.tld>
sub   rsa4096 2016-07-05 [S]
sig          567890ABCDEF1234 2016-07-05 Vorname Nachname <mailbox@domain.tld>

Die Liste oben zeit uns von wem und wann ein Schlüssel unterzeichnet wurde und welches level der Signatur verwendet wurde.

Cert-level und trust-db

Wenn ich mir sicher bin, dass ein Schlüssel von einer Person A ist und ich weiß dass diese Person A die Grundlagen der GnuPG kennt und diese richtig anwendet, dann kann ich die Schlüssel für gültig betrachten, was von Person A unterzeichnet wurde.

Ich habe sichergestellt, dass der Schlüssel 123456AB wirklich der Person A gehört und korrekt ist und diese Person GPG richtig verwendet (Prüfen der Schlüssel, etc).

gpg --key-edit 123456AB
gpg> trust
Bitte entscheiden Sie, in wieweit Sie diesem User zutrauen,
Schlüssel anderer User korrekt zu prüfen (durch Vergleich
mit Lichtbildausweisen, Vergleich der Fingerabdrücke aus
unterschiedlichen Quellen ...)?


 1 = Weiß nicht so recht
 2 = Nein, ihm traue ich NICHT
 3 = Ich vertraue ihm marginal
 4 = Ich vertraue ihm vollständig
 5 = Ich vertraue ihm absolut
 m = Zurück zum Menü

Ihre Auswahl? 

Wenn ich der Person A vollständig vertraue, dann wird diese Information lokal in der trust-db gespeichert. Hat die Person A die Schlüssel von Person B und C unterschrieben, so gehe ich jetzt davon aus, dass die Schlüssel von B und C korrekt sind, obwohl ich diese nicht unterschrieben haben.

Weitere Verwendung

GnuPG und SSH

Man kann einen OpenPGP Key auch für die Anmeldung auf einem entfernten Gerät via SSH verwenden. Hierfür wird ein SSH Key / Subkey zur Authentifizierung benötigt.

Schlüssel zur Authentifizierung prüfen

Im ersten Schritt kann man prüfen, ob sein gewünschter Schlüssel einen Key zur Authentifizierung hat. Dies ist abhängig davon wann und wie der Schlüssel erzeugt wurde. Neue Hauptschlüssel besitzen öfter einen Subkey welcher für die Authentifizierung verwenden werden kann.

Mit folgendem Befehl lassen sich alle privaten Schlüssel anzeigen:

        gpg -K 

Für jeden privaten Hauptschlüssel wird ein Block von Informationen angezeigt. Dies kann wie folgt aussehen:

sec   rsa3072 2018-10-04 [SC]
      15A638E61136364CD27D04513DD75F17895F85CA
uid        [ ultimativ ] Vorname Nachname <name@domain.tld>
ssb   rsa3072 2018-10-04 [E]
ssb   rsa3072 2018-10-04 [A]

Die Zeile ssb>  rsa3072 2018-01-01 [A] sagt aus, dass ein Schlüssel zur Autorisierung existiert. Wichtig ist hierbei, dass eine Zeile mit [A] existiert. Denn dies kennzeichnet einen Schlüssel für die Verwendung zur Authentifizierung.

Ist dieser Key nicht vorhanden, so muss dieser im expert-Modus über edit-key erzeugt werden.

gpg --expert --edit-key 15A638E61136364CD27D04513DD75F17895F85CA
gpg (GnuPG) 2.2.10; Copyright (C) 2018 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Geheimer Schlüssel ist vorhanden.

sec  rsa3072/3DD75F17895F85CA
     erzeugt: 2018-10-04  verfällt: niemals     Nutzung: SC  
     Vertrauen: ultimativ     Gültigkeit: ultimativ
ssb  rsa3072/CCC5475500365CFE
     erzeugt: 2018-10-04  verfällt: niemals     Nutzung: E   
[ ultimativ ] (1). Vorname Nachname <name@domain.tld>

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 (Nutzung selber einstellbar)
   (8) RSA (Nutzung selber einstellbar)
  (10) ECC (nur signieren)
  (11) ECC (Nutzung selber einstellbar)
  (12) ECC (nur verschlüsseln)
   (13) Vorhandener Schlüssel
Ihre Auswahl? 8

Mögliche Vorgänge eines RSA-Schlüssels: Signieren Verschl. Authentisierung 
Derzeit erlaubte Vorgänge: Signieren Verschl. 

   (S) Umschalten der Signaturnutzbarkeit
   (V) Umschalten der Verschlüsselungsnutzbarkeit
   (A) Umschalten der Authentisierungsnutzbarkeit
   (Q) Beenden

Ihre Auswahl? A

Mögliche Vorgänge eines RSA-Schlüssels: Signieren Verschl. Authentisierung 
Derzeit erlaubte Vorgänge: Signieren Verschl. Authentisierung 

   (S) Umschalten der Signaturnutzbarkeit
   (V) Umschalten der Verschlüsselungsnutzbarkeit
   (A) Umschalten der Authentisierungsnutzbarkeit
   (Q) Beenden

Ihre Auswahl? S

Mögliche Vorgänge eines RSA-Schlüssels: Signieren Verschl. Authentisierung 
Derzeit erlaubte Vorgänge: Verschl. Authentisierung 

   (S) Umschalten der Signaturnutzbarkeit
   (V) Umschalten der Verschlüsselungsnutzbarkeit
   (A) Umschalten der Authentisierungsnutzbarkeit
   (Q) Beenden
Ihre Auswahl? V

Mögliche Vorgänge eines RSA-Schlüssels: Signieren Verschl. Authentisierung 
Derzeit erlaubte Vorgänge: Authentisierung 

   (S) Umschalten der Signaturnutzbarkeit
   (V) Umschalten der Verschlüsselungsnutzbarkeit
   (A) Umschalten der Authentisierungsnutzbarkeit
   (Q) Beenden

Ihre Auswahl? Q

RSA-Schlüssel können zwischen 1024 und 4096 Bit lang sein.
Welche Schlüssellänge wünschen Sie? (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) 1y
Key verfällt am Mo 28 Okt 2019 12:23:38 CET
Ist dies richtig? (j/N) j
Wirklich erzeugen? (j/N) j

Oder etwas einfacher:

gpg --quick-add-key <Dein fingerprint> rsa 4096 2y 

GnuPG Agent konfigurieren

In die Konfigurationsdatei ~/.gnupg/gpg-agent.conf muss der folgende Eintrag hinzugefügt werden.

        enable-ssh-support

In der gpg.conf sollte die Verwendung vom Agent aktiv sein.

        use-agent

Danach sollte man sich erneut abmelden und wieder anmelden.

SSH-Key exportieren

Der SSH-Key lässt sich mit folgendem Befehl exportieren:

        gpg --export-ssh-key 15A638E61136364CD27D04513DD75F17895F85CA

Automatisches Suchen von öffentlichen Schlüssel

In der gpg.conf kann man sehr viele Einstellungen für die Verwaltung von GnuPG machen. Unter anderem ist es auch möglich automatisch nach Schlüsseln zu suchen.

        auto-key-locate local
        keyserver hkp://keys.gnupg.net
        auto-key-retrieve

In dem oben genannten Beispiel werden Verschlüsselungen nur mit lokalen Schlüsseln vorgenommen. Es wird definiert welcher Schlüssel Server verwendet werden soll. Die Option auto-key-retrieve wird bei der Prüfung einer Signatur nach dem Schlüssel auf dem Keyserver suchen.

OpenPGP Card

OpenPGP Smart Card V3.3

Zu Beginn ist die Karte noch leer. Weder persönliche Daten noch Schlüssel sind auf der Karte vorhanden.

% gpg --card-status
Reader ...........: 1050:0407:X:0
Application ID ...: D1234567890123456789012345678890
Version ..........: 2.1
Manufacturer .....: Yubico
Serial number ....: 12345678
Name of cardholder: [nicht gesetzt]
Language prefs ...: [nicht gesetzt]
Sex ..............: unbestimmt
URL of public key : [nicht gesetzt]
Login data .......: [nicht gesetzt]
Signature PIN ....: nicht zwingend
Key attributes ...: rsa2048 rsa2048 rsa2048
Max. PIN lengths .: 127 127 127
PIN retry counter : 3 0 3
Signature counter : 0
Signature key ....: [none]
Encryption key....: [none]
Authentication key: [none]
General key info..: [none]

Persönliche Daten können nur im Admin-Modus gesetzt werden. Somit muss man zunächst mit dem Befehl 'admin' in den Admin-Modus wechseln. Danach können persönliche Daten auf der Karte über die Befehle

gesetzt werden.

% gpg --card-edit
gpg/card> admin

nur-Admin Befehl 

gpg/card> name
Familienname des Kartenbesitzers:Nachname
Vorname des Kartenbesitzers:Vorname

Es gibt zwei Möglichkeiten einen Schlüssel für eine OpenPGP Card zu erzeugen.

Schlüssel direkt auf der Karte erzeugen.

gpg/card> generate 

Danach kann man die Information der Karte abrufen.

% gpg --card-status
Reader ...........: 08E6:3438:837E2768:0
Application ID ...: D2760001240101111111111111111100
Version ..........: 3.3
Manufacturer .....: ZeitControl
Serial number ....: 00001233
Name of cardholder: Vorname Nachname 
Language prefs ...: de
Sex ..............: männlich
URL of public key : [nicht gesetzt]
Login data .......: loginame
Signature PIN ....: zwingend
Key attributes ...: rsa2048 rsa2048 rsa2048
Max. PIN lengths .: 64 64 64
PIN retry counter : 3 0 3
Signature counter : 18
Signature key ....: 1234 4567 890A BCDE FG12  1234 1234 1234 ABCD ABCD
      created ....: 2018-09-29 19:29:32
Encryption key....: 9876 1234 9871 2344 ABCD  1234 ABCD 1234 ABCD 1234
      created ....: 2018-09-29 19:29:32
Authentication key: 9876 6543 1234 1234 ABCD  EF01 EF01 EF01 EF01 EF01
      created ....: 2018-09-29 19:29:32
General key info..: pub  rsa2048/1234567891234567 2018-09-29 Vorname Nachname <mailbox@domain.tld>
sec>  rsa2048/1234567890123456  erzeugt: 2018-09-29  verfällt: 2019-10-27
                                Kartennummer:0001 00001111
ssb>  rsa2048/9876543219876543  erzeugt: 2018-09-29  verfällt: 2019-10-27
                                Kartennummer:0001 00001111
ssb>  rsa2048/1234567890ABCDEF  erzeugt: 2018-09-29  verfällt: 2019-10-27
                                Kartennummer:0001 00001111

GnuPG für Fortgeschrittene


CategoryOpenPGP