Skip to main content

Austauschen einer defekten PGP Karte durch das Backup

Damit niemand so lang danach suchen muss wie ich

Ich 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!

2022-12-02