Austauschen einer defekten PGP Karte durch das Backup
Damit niemand so lang danach suchen muss wie ichIch hatte es geschafft, die PGP-Karte zu ruinieren, auf der sich der PGP-Key befindet den ich zum Lesen meiner eMails und zum Entschlüsseln meines Passwort-Stores benötige. Ein Backup besaß ich, in Form eines zweiten Hardware Schlüssels. Nun, leider stellte es sich als nicht so einfach heraus, diesen auszutauschen.
ich hätte natürlich die Sicherungskopien des Schlüssels, die ich mir beim Erstellen auf der Festplatte abgelegt hatte, einfach wieder auf den alten Key zurückspielen können, aber ich dachte mir: "Was wäre, wenn ich diesen Schlüssel komplett verloren hätte? Probier doch einmal aus, komplett auf den Reserve-Schlüssel zu wechseln".
Während es dutzende Anleitungen gibt, wie man einen Schlüssel von der Festplatte auf seinen Hardwaretoken spielt, wird es hier sehr dünn. Ich musste mehrere Stunden googeln, um da zu einer Lösung zu finden. Daher habe ich die hier einmal zusammengeschrieben, auch weil ich sie in Zukunft vieleicht selber wieder benötigen könnte.
Das Problem
Ich schaue mir den privaten Schlüssel an meinem Schlüsselbund an:
$ gpg --list-secret-keys gpg: verwende Vertrauensmodell pgp /home/andy//.gnupg/pubring.kbx ----------------------------- . . . sec> rsa4096 2021-04-19 [SC] 3E572D5964195D5FEABC3284405D44C9EE5427D5 Kartenseriennr. = 0006 15889829 uid [ ultimativ ] Andy Drop (internal use only) ssb> rsa4096 2021-04-19 [A] ssb> rsa4096 2021-04-19 [E]
Die '>' Zeichen hinter sec
und ssb
sagen mir, das sich in meinem Schlüsselbund nur sogenannte Stubs befinden, also nur Platzhalter, und sich die eigentlichen Schlüssel auf einer Hardware-Karte befinden. Welche Karte das ist steht in der dritten Zeile:
Kartenseriennr. = 0006 15889829
Wann immer ich also etwas mit diesem Schlüssel entschlüsseln möchte, fordert gnupg mich auf, genau diese Karte einzustecken. Keine andere Karte wird akzeptiert, auch nicht, wenn sie ebenfalls die passenden Schlüssel enthält.
Nun habe ich aber diese Karte verloren, und möchte gnupg beibringen meine Backupkarte zu akzeptieren.
Die Lösung
Alte Karte entfernen
Zunächst brauche ich dazu die sogenannten Keygrips der betroffenen Schlüssel
andy@drops:~$ gpg --edit-key 3E572D5964195D5FEABC3284405D44C9EE5427D5 gpg (GnuPG) 2.2.27; Copyright (C) 2021 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/405D44C9EE5427D5 erzeugt: 2021-04-19 verfällt: niemals Nutzung: SC Kartennummer:0006 15889829 Vertrauen: ultimativ Gültigkeit: ultimativ ssb rsa4096/9CE3093DEDB0EFA7 erzeugt: 2021-04-19 verfällt: niemals Nutzung: A Kartennummer:0006 15889829 ssb rsa4096/BFB3A95BEE2789E0 erzeugt: 2021-04-19 verfällt: niemals Nutzung: E Kartennummer:0006 15889829 [ ultimativ ] (1). Andy Drop (internal use only) gpg> grip pub rsa4096/405D44C9EE5427D5 2021-04-19 [SC] Keygrip: 952111DC39E0687E154045F1B54BA5BFC6242DBC sub rsa4096/9CE3093DEDB0EFA7 2021-04-19 [A] Keygrip: 95B287025E371F29E4FD871A87558B1680B99130 sub rsa4096/BFB3A95BEE2789E0 2021-04-19 [E] Keygrip: F0F87AFE74FEF37BA47A414979685B063D319EC2 gpg>
Diese Keygrips finde ich als Dateien im Verzeichnis ~/.gnupg/private-keys-v1.d
wieder
/home/andy/.gnupg/private-keys-v1.d: insgesamt 64K -rw------- 1 andy andy 1,2K 30. Nov 15:43 952111DC39E0687E154045F1B54BA5BFC6242DBC.key -rw------- 1 andy andy 1,2K 30. Nov 15:43 95B287025E371F29E4FD871A87558B1680B99130.key -rw------- 1 andy andy 1,2K 30. Nov 16:04 F0F87AFE74FEF37BA47A414979685B063D319EC2.key
In diesen Dateien ist der Verweis auf meine Schlüsselkarte hinterlegt. Da die Karte weg ist, müssen die Dateien nun auch gelöscht werden, Danach verlangt gnupg nicht mehr nach der alten Karte, weiss aber auch mit der Backup-Karte noch nichts anzufangen
Neue Karte verknüpfen
Dies ist dann wiederum sehr einfach. Ich stoppe zunächst den gpg-agent, da der mir sonst mit seinen gecachten Informationen das Leben zur Hölle macht.
gpgconf --kill gpg-agent
Danach stecke ich die neue Karte ein, und mache gnupg mit der neuen Karte bekannt
gpg --card-status
Danach hat gnupg neue Dateien für die Keygrips der neuen Karte angelegt, und nach einem herzhaften Neustart der User-Session verlangt er ab nun nach der Backup-Karte
Ziel erreicht!