So, statt "warten" habe ich auf "probieren" gesetzt und als Erstes meine Idee im ersten Post ausprobiert:
Ein voller Erfolg - es war ganz simpel!
Hier für Interessierte meine Vorgehensweise in Kurzform:
Ich habe meinem kompletten gpg-Key in ein "debian-live-10.3.0-amd64-xfce.iso" Image (das ich vorher persistent gemacht habe, s. weiter unten) in das ~/gpg-bak/ Unterverzeichnis kopiert und dann in gpg importiert. Installiert hatte ich vorher
seahorse und dann die Newtzwerkverbindung getrennt.
Code: Alles auswählen
gpg --import /home/user/gpg-bak/master+subkeys.asc
gpg --import /home/user/gpg-bak/subkeys.asc
Mit
seahorse habe ich dann das Verfalldatum der 3 Subkeys geändert auf "0". Jeweils:
Eigenschaften -> Details -> Ablaufdatum -> "Läuft nie ab" -> Ändern
Dann die upgedateten Keys wieder exportiert:
Code: Alles auswählen
gpg -a --export-secret-keys [key-ID] > ~/gpg-bak/master+subkeys-new.asc
gpg -a --export-secret-subkeys [key-ID] > ~/gpg-bak/subkeys-new.asc
gpg -a --export [key-ID] > ~/gpg-bak/pubkey-new.asc
Die exportierten "new"-Keys auf den Laptop, an dem ich den Yubikey nutze, kopiert, aber nur
subkeys-new.asc und
pubkey-new.asc, den Master-Key gibts auf dem Laptop ja nicht (das ist ja der Sicherheitsgewinn). Dort sind nur die 3 Subkeys für
sign,
encrypt und
authenticate und natürlich der
pubkey vorhanden. Und wenn wie bereits die alten secret-subkeys auf dem Yubikey liegen, sind dort nur noch "Stubs" mit einem Link zum Yubikey vorhanden.
Dann habe ich einfach meine Idee umgesetzt und die neuen
subkeys-new.asc und den
pubkey-new.asc auf den Laptop kopiert und dort importiert:
Code: Alles auswählen
gpg --import [Pfad zu]/subkeys-new.asc
....
gpg: Anzahl insgesamt bearbeiteter Schlüssel: 1
gpg: neue Signaturen: 3
gpg: gelesene geheime Schlüssel: 1
gpg: unveränderte geh. Schl.: 1
und
Code: Alles auswählen
gpg --import [Pfad zu]/pubkey-new.asc
gpg: Anzahl insgesamt bearbeiteter Schlüssel: 1
gpg: unverändert: 1
Dabei wird nichts auf den Yubikey geschrieben (muß natürlich dabei vorher eingesteckt sein) und die "Stubs" sind nachher wieder/noch vorhanden, haben auch die gleiche Dateigröße, aber unterschiedlichen Inhalt.
Getestet mit
Code: Alles auswählen
gpg --list-secret-key --with-subkey-fingerprint [key-ID]
Alles ok - das Verfalldatum ist verschwunden. Ver- und Entschlüsseln von Mail und Dateien kreuzweise alter <--> neuer Key geht einwandfrei. Key-Info in
enigmail und auch
seahorse sagt das Gleiche.
Sowohl die
keygrips als auch der
fingerprint und damit key-ID's haben sich nicht geändert.
Der einzige Unterschied auf dem Laptop ist der Inhalt der "Stub's" für die 3 Subkeys (das sind die 3 Dateien im Verzeichnis .gnupg/private-keys-v1.d/ mit dem Namen
$keygrip.key)
Auch der SSH-Login auf meinem Serverlein mit dem
neuen Key geht problemlos - also fertig!
Zusätzlich gecheckt/verglichen:
Code: Alles auswählen
cat .ssh/authorized_keys (auf dem Server)
ssh-add -L (auf dem Laptop mit eingestecktem Yubikey
liefert identischen Output - d.h. ein neue Übertragung des Pubkey's ist nicht erforderlich.
Fazit:
Es geht genau wie überlegt und bestätigt die Aussage im Arch-Wiki zu gpg:
There is no need to re-export your secret key or update your backups: the master secret key itself never expires, and the signature of the expiration date left on the public key and subkeys is all that is needed.
Wichtig zu erwähnen:
- Das Ganze wurde unter Buster mit gnupg v2.2 gemacht , unter Stretch geht es wohl nicht so einfach.
- Mein gpg-Key hatte für den Master-Key kein Verfalldatum, nur die 3 Subkeys wurden verlängert.
Schluß daraus:
Offenbar nur der Crypto-Teil des Schlüssels liegt auf dem Yubikey, die ganzen (alle?) Meta-Informationen stecken in den Stub's, die auf dem Rechner verbleiben.
Was ich nur gerne wissen würde: wie kann man so ein Verhalten erklären?
Das es geht, habe ich selbst gesehen, aber verstehen tu' ich das Ganze nicht wirklich
Das persistente Live-Debian habe ich nach dieser Anleitung erstellt:
https://unix.stackexchange.com/question ... ersistence
Den Boot-Parameter des Images habe ich mit
sed geändert:
Code: Alles auswählen
LANG=C sed 's/splash quiet/persistence /;s/quiet splash/persistence /' < debian-live-10.3.0-amd64-xfce.iso > debian-live-10.3.0-amd64-xfce-persistent.iso
Das 1 Leerzeichenhinter dem Wort "persistence" ist wichtig!
Die beschreibbare Partition für Persistenz im freien Bereich hinter dem Hybrid-Iso erstellt.
Achtung dabei:
gparted taugt nicht zum Anlegen der zusätzlichen Partition hinter dem Hybrid-Iso auf den USB-Stick -
fdisk im Terminal geht einwandfrei.
Fragen beantworte ich gern,
Ingo