Status: Entwurf
Contents
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:
- 0xlong - 0x1234567890ABCDEF
- 0xshort - 0x12345678
- long - 0x1234567890ABCDEF
- short - 12345678
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]
pub - Hauptschlüssel
uid - Benutzer-ID
sub - Subschlüssel
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.
- S - Sign
- C - Certify
- E - Encrypt
- A - Authenticate
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.
- sig 0 - cert-level 0 (unbekannt)
- sig 1 - cert-level 1 (nicht geprüft)
- sig 2 - cert-level 2 (flüchtig)
- sig 3 - cert-level 3 (sorgfältig)
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
- 'name' Kartenbesitzernamen ändern
- 'lang' - Ändern der Spracheinstellungen
- 'sex' - Ändern des Geschlechts des Kartenbesitzers
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.
- a) Den Schlüssel direkt auf der Karte erzeugen
- b) Den Schlüssel auf dem PC erstellen und dann auf die Karte schieben
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