GnuPG-Schlüssel werden für viele Dinge genutzt. In meinem Fall ist es Code Signing für GitHub und GitLab. Dabei verfolge ich das Prinzip des unbenutzten Master Keys:
- Der Master Key wird einzig und allein dafür genutzt, weitere Subkeys zu erzeugen.
- Abseits dieser Nutzung wird der Master Key noch nicht einmal im Schlüsselbund gehalten, um die Angriffsfläche zu minimieren.
Außerdem gebe ich jedem Schlüssel eine begrenzte Laufzeit, so dass sie spätestens nach dieser Laufzeit nicht mehr verwendbar sind.
Das führt jedoch dazu, dass ich immer mal wieder neue Schlüssel generieren muss. Und weil das nur selten vorkommt, dokumentiere ich den Prozess hier einmal.
Voraussetzungen & Hinweise
Die Ausgabe von GnuPG unterscheidet sich mitunter, je nachdem, wie die Konfiguration aussieht. Für die Beispiele wichtig ist die Option keyid-format 0xlong
, da hiermit die Schlüssel-IDs im langen Format ausgegeben werden.
Eine Schlüssel-ID ist ein eindeutiger Bezeichner für einen spezifischen Schlüssel. Im Beispiel wird die Schlüssel-ID 0x159A56806BA60A9E
verwendet. Bei eigener Nutzung wird eine andere Schlüssel-ID zu nutzen sein. Die Kommandos im Folgenden müssen also, immer dort, wo diese Schlüssel-ID verwendet wird, entsprechend angepasst werden.
Die Beispiele wurden auf einem deutschen Windows 11 Pro durchgespielt und aufgezeichnet. Die Befehle lassen sich jedoch 1:1 auf andere Systeme übertragen; getestet habe ich das mit einem macOS 15.
Master Key
Der Master Key muss einmalig je Identität erzeugt werden.
Master Key generieren
Im Terminal den folgenden Befehl ausführen:
gpg --expert --full-generate-key
Dadurch wird man durch einen Dialog geleitet, in dem alle Optionen, die zum generieren eines Schlüssels benötigt werden, abgefragt werden. Als erstes wird nach dem Schlüsseltyp gefragt:
gpg (GnuPG) 2.4.0; Copyright (C) 2021 g10 Code GmbH
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
(2) DSA und Elgamal
(3) DSA (nur signieren)
(4) RSA (nur signieren)
(7) DSA (Nutzung selber einstellbar)
(8) RSA (Nutzung selber einstellbar)
(9) ECC (signieren, verschlüsseln) *standard*
(10) ECC (nur signieren)
(11) ECC (Nutzung selber einstellbar)
(13) Vorhandener Schlüssel
(14) Vorhandener Schlüssel auf der Karte
Ihre Auswahl? 9
Die kompatibelste Version ist RSA/RSA (1), moderner und sicherer ist ECC (9).
- Bei Auswahl RSA wird nach einer Schlüssellänge gefragt. Hier 4096 wählen, da dies die höchste Sicherheit bietet.
- Bei Auswahl ECC wird nach einer zu nutzenden elliptischen Kurve gefragt. Hier einfach den Standard, Curve 25519, wählen.
Als nächstes wird nach einer Gültigkeitsdauer für den Schlüssel gefragt. Hier auf jeden Fall eine Zeitspanne angeben, nach der der Schlüssel ablaufen soll! Ich empfehle einen Wert zwischen einem und drei Jahren. Keine Sorge, die Laufzeit kann immer wieder verlängert werden. Anschließend an die Eingabe der Dauer wird der konkrete Zeitpunkt angezeigt und gefragt, ob das so korrekt ist.
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) 25m
Key verfällt am 14.12.2026 17:48:55 Mitteleurop�ische Zeit
Ist dies richtig? (j/N) j
Zum Abschluss werden noch ein paar Grundlegende Daten abgefragt:
- Ein Name, auf den der Schlüssel lauten soll.
- Eine zugehörige E-Mail-Adresse.
- Ein optionaler Kommentar zum Schlüssel.
- Ein Passwort für den Schlüssel.
GnuPG erstellt eine User-ID, um Ihren Schlüssel identifizierbar zu machen.
Ihr Name ("Vorname Nachname"): Max Mustermann
Email-Adresse: max.mustermann@example.com
Kommentar: Master Key max.mustermann@example.com
Sie haben diese User-ID gewählt:
"Max Mustermann (Master Key max.mustermann@example.com) <max.mustermann@example.com>"
Ändern: (N)ame, (K)ommentar, (E)-Mail oder (F)ertig/(A)bbrechen? f
Das war es mit den Eingaben; GnuPG wird nun Entropie sammeln und den Schlüssel generieren. Sobald GnuPG fertig ist, werden die Basisdaten des neuen Schlüssels angezeigt.
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: Verzeichnis `C:\\Users\\rober\\AppData\\Roaming\\gnupg\\openpgp-revocs.d' erzeugt
gpg: Widerrufzertifikat wurde als 'C:\\Users\\rober\\AppData\\Roaming\\gnupg\\openpgp-revocs.d\\6AB6FD911E749DD9BADE3045159A56806BA60A9E.rev' gespeichert.
Öffentlichen und geheimen Schlüssel erzeugt und signiert.
pub ed25519/0x159A56806BA60A9E 2024-11-24 [SC] [verfällt: 2026-12-14]
Schl.-Fingerabdruck = 6AB6 FD91 1E74 9DD9 BADE 3045 159A 5680 6BA6 0A9E
uid Max Mustermann (Master Key max.mustermann@example.com) <max.mustermann@example.com>
sub cv25519/0x28CED41109693B97 2024-11-24 [E] [verfällt: 2026-12-14]
Wichtig an der Stelle ist die Schlüssel-ID 0x159A56806BA60A9E
des Master Keys. Diese ID wird im Folgenden für die weitere Bearbeitung des Schlüssels verwendet. Bei eigener Verwendung muss die vom Kommando ausgegebene ID genutzt werden.
Master Key einschränken
Der frisch generierte Master Key kann nun für alle möglichen Zwecke benutzt werden. Dies ist an den Buchstaben in den eckigen Klammern ersichtlich:
- C steht für Certification, also zertifizieren.
- S steht für Signing, also signieren.
- E steht für Encryption, als verschlüsseln.
Da der Master Key nur genutzt werden soll, um weitere Schlüssel zu generieren, werden die Fähigkeiten Signing und Encryption nicht benötigt. Um diese zu entfernen, wird der Schlüssel bearbeitet.
gpg --edit-key 0x159A56806BA60A9E
Mit diesem Befehl landet man in der GnuPG-Shell (Tipp: help
). Mit dieser können Schlüssel umfangreich gesichtet und bearbeitet werden. Bei dem Master Key geht es nun darum, …
- …die Fähigkeiten einzuschränken.
- …unnötige Unterschlüssel zu löschen.
Beim Öffnen der GnuPG-Shell wird eine Übersicht des Schlüssels angezeigt.
gpg (GnuPG) 2.4.0; Copyright (C) 2021 g10 Code GmbH
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 ed25519/0x159A56806BA60A9E
erzeugt: 2024-11-24 verfällt: 2026-12-14 Nutzung: SC
Vertrauen: ultimativ Gültigkeit: ultimativ
ssb cv25519/0x28CED41109693B97
erzeugt: 2024-11-24 verfällt: 2026-12-14 Nutzung: E
[ ultimativ ] (1). Max Mustermann (Master Key max.mustermann@example.com) <max.mustermann@example.com>
Als erstes soll nun der Unterschlüssel entfernt werden, der für die Verschlüsselung zuständig ist. Hierzu wird mittels key 1
eben jener ausgewählt (es erscheint ein *
bei dem Eintrag) und mittels delkey
gelöscht.
gpg> key 1
sec ed25519/0x159A56806BA60A9E
erzeugt: 2024-11-24 verfällt: 2026-12-14 Nutzung: SC
Vertrauen: ultimativ Gültigkeit: ultimativ
ssb* cv25519/0x28CED41109693B97
erzeugt: 2024-11-24 verfällt: 2026-12-14 Nutzung: E
[ ultimativ ] (1). Max Mustermann (Master Key max.mustermann@example.com) <max.mustermann@example.com>
gpg> delkey
Möchten Sie diesen Schlüssel wirklich entfernen? (j/N) j
sec ed25519/0x159A56806BA60A9E
erzeugt: 2024-11-24 verfällt: 2026-12-14 Nutzung: SC
Vertrauen: ultimativ Gültigkeit: ultimativ
[ ultimativ ] (1). Max Mustermann (Master Key max.mustermann@example.com) <max.mustermann@example.com>
Als nächstes wird mittels change-usage
dem Master Key die Fähigkeit entzogen, Signaturen auszustellen. Hierzu wird zwischendrin das Passwort für den Schlüssel abgefragt.
gpg> change-usage
Ändern des Schlüsselverwendungszweckes des Hauptschlüssels.
Mögliche Aktionen für diesen ECC Schlüssel: Signieren Zertif. Authentisierung
Derzeit erlaubte Vorgänge: Signieren Zertif.
(S) Umschalten der Signaturnutzbarkeit
(A) Umschalten der Authentisierungsnutzbarkeit
(Q) Beenden
Ihre Auswahl? s
Mögliche Aktionen für diesen ECC Schlüssel: Signieren Zertif. Authentisierung
Derzeit erlaubte Vorgänge: Zertif.
(S) Umschalten der Signaturnutzbarkeit
(A) Umschalten der Authentisierungsnutzbarkeit
(Q) Beenden
Ihre Auswahl? q
sec ed25519/0x159A56806BA60A9E
erzeugt: 2024-11-24 verfällt: 2026-12-14 Nutzung: C
Vertrauen: ultimativ Gültigkeit: ultimativ
[ ultimativ ] (1). Max Mustermann (Master Key max.mustermann@example.com) <max.mustermann@example.com>
Damit ist der Master Key fertig zurechtgestutzt. Mittels save
werden die Änderungen gespeichert und die GnuPG-Shell verlassen.
gpg> save
Revocation Certificate generieren
Sollte es aus irgend einem Grund notwendig werden, den Master Key zu revoken, also zurückzurufen, wird dafür ein sogenanntes Revocation Certificate benötigt. Dieses wird mit folgendem Kommando erzeugt:
gpg --armor --output 0x159A56806BA60A9E.rev.asc --gen-revoke 0x159A56806BA60A9E
Man landet erneut in einem Dialogsystem, welches als erstes die Frage stellt, ob man wirklich ein Widerrufzertifikat für den Schlüssel erstellen möchte. Außerdem fragt es nach einem Grund und einer optionalen Beschreibung. Abschließend werden die Eingaben aufgelistet und die Korrektheit abgefragt. Nach Eingabe des Passworts für den Schlüssel wird das Zertifikat schließlich erzeugt.
sec ed25519/0x159A56806BA60A9E 2024-11-24 Max Mustermann (Master Key max.mustermann@example.com) <max.mustermann@example.com>
Ein Widerrufszertifikat für diesen Schlüssel erzeugen? (j/N) j
Grund für den Widerruf:
0 = Kein Grund angegeben
1 = Hinweis: Dieser Schlüssel ist nicht mehr sicher
2 = Schlüssel ist überholt
3 = Schlüssel wird nicht mehr benutzt
Q = Abbruch
(Wahrscheinlich möchten Sie hier 1 auswählen)
Ihre Auswahl? 1
Geben Sie eine optionale Beschreibung ein. Beenden mit einer leeren Zeile:
> Widerrufszertifikat fuer etwaige Notfaelle
>
Grund für Widerruf: Hinweis: Dieser Schlüssel ist nicht mehr sicher
Widerrufszertifikat fuer etwaige Notfaelle
Ist das OK? (j/N) j
Widerrufszertifikat wurde erzeugt.
Bitte speichern Sie es auf einem Medium welches Sie wegschließen
können; falls Mallory (ein Angreifer) Zugang zu diesem Zertifikat
erhält, kann er Ihren Schlüssel unbrauchbar machen. Es wäre klug,
dieses Widerrufszertifikat auch auszudrucken und sicher aufzubewahren,
falls das ursprüngliche Medium nicht mehr lesbar ist. Aber Obacht: Das
Drucksystem kann unter Umständen eine Kopie anderen Nutzern zugänglich
machen.
Öffentlichen Schlüssel exportieren
Zur Weitergabe an Dritte, damit diese erhaltene Daten verifizieren können, dient der öffentliche Schlüssel (Public Key). Dieser wird mit folgendem Kommando exportiert:
gpg --armor --output 0x159A56806BA60A9E.pub.asc --export 0x159A56806BA60A9E
Als Resultat wird die Datei 0x159A56806BA60A9E.pub.asc
generiert, welche den öffentlichen Schlüssel enthält und bedenkenlos weitergegeben werden kann.
Privaten Master Key exportieren
Nur für den eigenen Gebrauch wird nun der Master Key exportiert:
gpg --armor --output 0x159A56806BA60A9E.sec.asc --export-secret-key 0x159A56806BA60A9E
Nach Eingabe des Passworts für den Schlüssel wird die Datei 0x159A56806BA60A9E.sec.asc
erzeugt. Diese Datei ist nur für den eigenen Gebrauch und darf an Dritte niemals weitergegeben werden. Außerdem darf sie nie abhanden kommen, denn ohne den privaten Master Key können keine Subkeys generiert werden!
Master Key löschen
Zum Abschluss wird, nachdem der exportierte Master Key gut gesichert wurde, der Master Key aus dem Schlüsselbund gelöscht.
gpg --delete-secret-keys 0x159A56806BA60A9E
Erneut folgt ein Dialogsystem. Dieses beschränkt sich darauf, nachzufragen, ob man wirklich sicher ist mit dem Löschvorgang - für den Master Key und jeden etwaigen Subkey.
gpg (GnuPG) 2.4.0; Copyright (C) 2021 g10 Code GmbH
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
sec ed25519/0x159A56806BA60A9E 2024-11-24 Max Mustermann (Master Key max.mustermann@example.com) <max.mustermann@example.com>
Diesen Schlüssel aus dem Schlüsselbund löschen? (j/N) j
Dies ist ein privater Schlüssel! - Wirklich löschen? (j/N) j
Damit ist das Kapitel Master Key beendet.
Private Subkeys
Die privaten Subkeys sind die Schlüssel, die im weiteren Verlauf tatsächlich benutzt werden. Diese werden zyklisch immer wieder generiert. Als Grundvoraussetzung wird der Master Key benötigt, da er als Basis für alle Subkeys dient.
Master Key importieren
Der exportierte Master Key wird wieder in den Schlüsselbund importiert, indem folgendes Kommando ausgeführt wird:
gpg --import 0x159A56806BA60A9E.sec.asc
Nach Eingabe des Passworts für den Schlüssel wird eine Übersicht angezeigt, welche Schlüssel importiert wurden.
gpg: Schlüssel 0x159A56806BA60A9E: "Max Mustermann (Master Key max.mustermann@example.com) <max.mustermann@example.com>" nicht geändert
gpg: Schlüssel 0x159A56806BA60A9E: geheimer Schlüssel importiert
gpg: Anzahl insgesamt bearbeiteter Schlüssel: 1
gpg: unverändert: 1
gpg: gelesene geheime Schlüssel: 1
gpg: geheime Schlüssel importiert: 1
Laufzeit des Master Keys anpassen
Der Master Key muss eine Laufzeit haben, die ein wenig länger als die der zu erstellenden Subkeys ist. Daher wird der Master Key mit folgendem Befehl bearbeitet:
gpg --expert --edit-key 0x159A56806BA60A9E
Man landet in der GnuPG-Shell. Mittels dem Befehl expire
wird die Laufzeit angepasst.
gpg (GnuPG) 2.4.0; Copyright (C) 2021 g10 Code GmbH
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 ed25519/0x159A56806BA60A9E
erzeugt: 2024-11-24 verfällt: 2026-12-14 Nutzung: C
Vertrauen: ultimativ Gültigkeit: ultimativ
[ ultimativ ] (1). Max Mustermann (Master Key max.mustermann@example.com) <max.mustermann@example.com>
gpg> expire
Ändern des Verfallsdatums des Hauptschlüssels.
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) 26m
Key verfällt am 13.01.2027 19:30:03 Mitteleurop�ische Zeit
Ist dies richtig? (j/N) j
sec ed25519/0x159A56806BA60A9E
erzeugt: 2024-11-24 verfällt: 2027-01-13 Nutzung: C
Vertrauen: ultimativ Gültigkeit: ultimativ
[ ultimativ ] (1). Max Mustermann (Master Key max.mustermann@example.com) <max.mustermann@example.com>
Anschließend wird mittels addkey
zweimal ein neuer Subkey erzeugt. Einer für das Signieren, einer für das Verschlüsseln. Bei den Subkeys wähle ich grundsätzlich RSA mit 3072 Bit, da dies sehr kompatibel und für kurze Laufzeiten sicher genug ist. Die Laufzeiten wähle ich etwas kürzer als die des Master Keys.
gpg> addkey
Bitte wählen Sie, welche Art von Schlüssel Sie möchten:
(3) DSA (nur signieren)
(4) RSA (nur signieren)
(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
(14) Vorhandener Schlüssel auf der Karte
Ihre Auswahl? 4
RSA-Schlüssel können zwischen 1024 und 4096 Bit lang sein.
Welche Schlüssellänge wünschen Sie? (3072) 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) 25m
Key verfällt am 14.12.2026 19:32:48 Mitteleurop�ische Zeit
Ist dies richtig? (j/N) j
Wirklich erzeugen? (j/N) j
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.
sec ed25519/0x159A56806BA60A9E
erzeugt: 2024-11-24 verfällt: 2027-01-13 Nutzung: C
Vertrauen: ultimativ Gültigkeit: ultimativ
ssb rsa3072/0x76CAB18FF99891B1
erzeugt: 2024-11-24 verfällt: 2026-12-14 Nutzung: S
[ ultimativ ] (1). Max Mustermann (Master Key max.mustermann@example.com) <max.mustermann@example.com>
gpg> addkey
Bitte wählen Sie, welche Art von Schlüssel Sie möchten:
(3) DSA (nur signieren)
(4) RSA (nur signieren)
(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
(14) Vorhandener Schlüssel auf der Karte
Ihre Auswahl? 6
RSA-Schlüssel können zwischen 1024 und 4096 Bit lang sein.
Welche Schlüssellänge wünschen Sie? (3072) 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) 25m
Key verfällt am 14.12.2026 19:33:19 Mitteleurop�ische Zeit
Ist dies richtig? (j/N) j
Wirklich erzeugen? (j/N) j
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.
sec ed25519/0x159A56806BA60A9E
erzeugt: 2024-11-24 verfällt: 2027-01-13 Nutzung: C
Vertrauen: ultimativ Gültigkeit: ultimativ
ssb rsa3072/0x76CAB18FF99891B1
erzeugt: 2024-11-24 verfällt: 2026-12-14 Nutzung: S
ssb rsa3072/0x365EA82A52B9BB50
erzeugt: 2024-11-24 verfällt: 2026-12-14 Nutzung: E
[ ultimativ ] (1). Max Mustermann (Master Key max.mustermann@example.com) <max.mustermann@example.com>
Abschließend werden die Änderungen mit save
gespeichert und damit auch die GnuPG-Shell verlassen.
gpg> save
Schlüssel & co. exportieren
Nachdem die neuen Subkeys erzeugt wurden, werden sämtliche nötigen Exporte generiert.
- Public Key
- Revocation Certificate
- Master Key
- Subkeys
Dazu sind folgende Kommandos nötig:
gpg --armor --output 0x159A56806BA60A9E.pub.asc --export 0x159A56806BA60A9E
gpg --armor --output 0x159A56806BA60A9E.rev.asc --gen-revoke 0x159A56806BA60A9E
gpg --armor --output 0x159A56806BA60A9E.sec.asc --export-secret-key 0x159A56806BA60A9E
gpg --armor --output 0x159A56806BA60A9E.secsub.asc --export-secret-subkeys 0x159A56806BA60A9E
Etwaige Eingaben sind bekannt (hier schon erklärt) bzw. selbsterläuternd. Es entstehen vier Dateien:
0x159A56806BA60A9E.pub.asc
ist der öffentliche Schlüssel. Diese Datei ist die einzige, die an Dritte weitergegeben werden darf.0x159A56806BA60A9E.rev.asc
ist das Revocation Certificate. Nur für den eigenen Gebrauch, nie weitergeben!0x159A56806BA60A9E.sec.asc
ist der private Master Key. Nur für den eigenen Gebrauch, nie weitergeben!0x159A56806BA60A9E.secsub.asc
sind die privaten Subkeys. Nur für den eigenen Gebrauch, nie weitergeben!
Diese Dateien müssen unbedingt sicher gespeichert werden. Mit Ausnahme des Public Keys wäre ein Verlust absolut fatal!
Schlüssel aus dem Schlüsselbund löschen
Es mag kontraproduktiv erscheinen, ist aber der Teil, der den Master Key solange aus dem Spiel nimmt, bis man ihn tatsächlich braucht: Die ganzen Schlüssel werden nun aus dem Schlüsselbund gelöscht:
gpg --delete-secret-keys 0x159A56806BA60A9E
Erneut wird für jeden Schlüssel nachgefragt, ob man sich sicher ist. Sobald die Schlüssel gelöscht sind, importiert man nun nur die Subkeys:
gpg --import 0x159A56806BA60A9E.secsub.asc
Nach Abfrage des Passworts wird eine Übersicht angezeigt, wie viele Schlüssel importiert wurden.
gpg: Schlüssel 0x159A56806BA60A9E: "Max Mustermann (Master Key max.mustermann@example.com) <max.mustermann@example.com>" nicht geändert
gpg: Um 'secring.gpg' zu migrieren sollte für jede Smartcard "gpg --card-status" aufgerufen werden.
gpg: Schlüssel 0x159A56806BA60A9E: geheimer Schlüssel importiert
gpg: Anzahl insgesamt bearbeiteter Schlüssel: 1
gpg: unverändert: 1
gpg: gelesene geheime Schlüssel: 1
gpg: geheime Schlüssel importiert: 1
Diese Aufstellung ist leider irreführend, da sie sich nur auf den Master Key bezieht. Ein Aufruf von …
gpg --list-secret-keys
…bringt hier mehr Klarheit.
C:\Users\user\AppData\Roaming\gnupg\pubring.kbx
------------------------------------------------
sec# ed25519/0x159A56806BA60A9E 2024-11-24 [C] [verfällt: 2027-01-13]
Schl.-Fingerabdruck = 6AB6 FD91 1E74 9DD9 BADE 3045 159A 5680 6BA6 0A9E
uid [ ultimativ ] Max Mustermann (Master Key max.mustermann@example.com) <max.mustermann@example.com>
ssb rsa3072/0x76CAB18FF99891B1 2024-11-24 [S] [verfällt: 2026-12-14]
ssb rsa3072/0x365EA82A52B9BB50 2024-11-24 [E] [verfällt: 2026-12-14]
Hier ist an der Raute hinter dem sec
zu erkennen, dass der Master Key selber tatsächlich nicht im Schlüsselbund vorhanden ist. Dort sind nur die Subkeys enthalten, erkennbar daran, dass die ssb
-Einträge keine Raute aufweisen.
Damit sind die Subkeys generiert und verwendbar, während sich der Master Key nicht im Schlüsselbund befindet. Fröhliches signieren und verschlüsseln!
Nacharbeiten
Es sollte nicht vergessen werden, die neuen Keys bzw. die neuen Laufzeiten über eine erneute Verteilung des Public Keys bekanntzumachen. Beispiele für Seiten, auf denen das nötig ist:
Quellen
- How to create a GPG master key and subkeys
- How to revoke a GPG Key and upload in GPG server?
- How to work with PGP keys using GnuPG
Anhänge
gpg.conf
Meine GnuPG-Konfiguration, Stand 25. Nov. 2024.
# https://www.gnupg.org/documentation/manuals/gnupg/GPG-Options.html#GPG-Options
# https://riseup.net/en/security/message-security/openpgp/gpg-best-practices
# https://blog.eleven-labs.com/en/openpgp-almost-perfect-key-pair-part-1/
# Configuration options
list-options show-policy-urls
#enable-large-rsa
display-charset utf-8
utf8-strings
ask-cert-level
default-cert-level 0
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
trust-model pgp
auto-key-locate local,keyserver
keyserver hkp://eu.pool.sks-keyservers.net
#keyserver-options no-try-dns-srv
keyserver-options no-auto-key-retrieve
keyserver-options no-honor-keyserver-url
keyserver-options include-revoked
require-secmem
expert
# Avoid information leaked
no-emit-version
no-comments
export-options export-minimal
# Key related options
# nothing to configure
# Input and Output
keyid-format 0xlong
with-fingerprint
list-options show-uid-validity
verify-options show-uid-validity
# OpenPGP options
force-mdc
personal-cipher-preferences TWOFISH,AES256,AES192,BLOWFISH,AES
personal-digest-preferences SHA512,SHA384,SHA256
personal-compress-preferences ZLIB,Uncompressed
cipher-algo AES256
digest-algo SHA512
cert-digest-algo SHA512
compress-algo ZLIB
disable-cipher-algo 3DES
weak-digest SHA1
s2k-cipher-algo AES256
s2k-digest-algo SHA512
s2k-mode 3
s2k-count 65011712
# Compliance options
rfc4880